4

私は C++ と System.out.println(); の知識がある Java の学習初心者です。今私を混乱させています。Systemはクラス、outはメソッドを呼び出せる変数?? によると: http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/application/objects.html out はクラス変数であり、変数は型名を持つコンピューター メモリ内の格納場所です。とコンテンツ。.getLength() のようなメソッドを使用できる文字列のようなオブジェクトではありません。Web サイトが説明する方法は、 out が PrintStream クラスのインスタンスを参照するということですが、どのように?

4

8 に答える 8

6

それはオブジェクトではありません

これはあなたの推論が間違っているところです。オブジェクト (への参照) ですSystem.out

JavadocPrintStreamに記載されているように、参照のタイプはです。これは、のメソッドを で呼び出すことができることを意味します。例:PrintStreamSystem.out

System.out.println();
于 2012-11-06T20:43:33.823 に答える
1

より厳密には、これはタイプのオブジェクトへの参照であるパブリック静的フィールドであるPrintStreamため、その上でメソッドを呼び出すことができます。

Java参照はCポインターにほぼ類似しています(少なくともそれらの使用方法では、明らかに大きな違いがあります)。

于 2012-11-06T20:46:39.020 に答える
1

outメソッドを呼び出さない : メソッドを呼び出すことができるoutオブジェクト (のインスタンス) を保持する変数ですPrintStream

例えば ​​:

System.out.println("hey!");

あなたもできる

void print(PrintStream ps, Object o) {
    ps.println(o);
}
...
print(System.out, "hey!");
于 2012-11-06T20:43:47.730 に答える
1

Out は、Systemという名前のクラスのpublic static フィールドです。

public であるため、メソッドを呼び出すことができます。

その型はPrintStreamです。

学習する最善の方法は、ドキュメントを読むことです。

inout、およびerrが記述されている上部の部分に注意してください。

于 2012-11-06T20:44:05.913 に答える
0

System.outは、PrintStreamの特定のインスタンスであり、その出力はC++stdoutと同等のものにリンクされています。

于 2012-11-06T20:45:41.690 に答える
0

実際には、out パラメータ inはクラスSystem.out.println(String args[])内の静的フィールドです。Systemフィールドが宣言されるときはいつでも、特定のデータ型を持つ必要があります。このクラスでは、out フィールドは として定義されstatic PrintStream out;ます。

これは out のデータ型がクラスであることを意味します。PrintStreamこのようにして、実際にはクラスSystem.outのオブジェクトを表します。PrintStreamこのオブジェクトを使用して、クラスprintln()のメソッドを呼び出しています。PrintStream

于 2016-03-06T11:45:22.973 に答える