私は C++ と System.out.println(); の知識がある Java の学習初心者です。今私を混乱させています。Systemはクラス、outはメソッドを呼び出せる変数?? によると: http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/application/objects.html out はクラス変数であり、変数は型名を持つコンピューター メモリ内の格納場所です。とコンテンツ。.getLength() のようなメソッドを使用できる文字列のようなオブジェクトではありません。Web サイトが説明する方法は、 out が PrintStream クラスのインスタンスを参照するということですが、どのように?
8 に答える
それはオブジェクトではありません
これはあなたの推論が間違っているところです。オブジェクト (への参照) ですSystem.out
。
JavadocPrintStream
に記載されているように、参照のタイプはです。これは、のメソッドを で呼び出すことができることを意味します。例:PrintStream
System.out
System.out.println();
より厳密には、これはタイプのオブジェクトへの参照であるパブリック静的フィールドであるPrintStream
ため、その上でメソッドを呼び出すことができます。
Java参照はCポインターにほぼ類似しています(少なくともそれらの使用方法では、明らかに大きな違いがあります)。
out
メソッドを呼び出さない : メソッドを呼び出すことができるout
オブジェクト (のインスタンス) を保持する変数ですPrintStream
。
例えば :
System.out.println("hey!");
あなたもできる
void print(PrintStream ps, Object o) {
ps.println(o);
}
...
print(System.out, "hey!");
Out は、Systemという名前のクラスのpublic static フィールドです。
public であるため、メソッドを呼び出すことができます。
その型はPrintStreamです。
学習する最善の方法は、ドキュメントを読むことです。
in、out、およびerrが記述されている上部の部分に注意してください。
System.outは、PrintStreamの特定のインスタンスであり、その出力はC++stdoutと同等のものにリンクされています。
実際には、out パラメータ inはクラスSystem.out.println(String args[])
内の静的フィールドです。System
フィールドが宣言されるときはいつでも、特定のデータ型を持つ必要があります。このクラスでは、out フィールドは として定義されstatic PrintStream out;
ます。
これは out のデータ型がクラスであることを意味します。PrintStream
このようにして、実際にはクラスSystem.out
のオブジェクトを表します。PrintStream
このオブジェクトを使用して、クラスprintln()
のメソッドを呼び出しています。PrintStream