0

System.out.println()画面に何かを出力するためのJavaのステートメント。このステートメントSystemでは、 はクラス、outはそのクラスのオブジェクト、 はそのクラスprintln()のメソッドです。

クラス A のインスタンスまたはオブジェクトをクラス B で宣言すると、次の構文が使用されますA object;。パブリックとして宣言されているクラスのメソッドがある場合、次の構文でメソッドが呼び出されます。 、object.method(argument)

outここで私の質問は、クラスのオブジェクト をSystem次の構文 で宣言できない理由System out = new System();です。

4

4 に答える 4

4

このステートメントでは、"System" はクラス、"out" はそのクラスのオブジェクトです。

いいえ、outは 内の静的フィールドですSystem。への参照を返すフィールドPrintStreamです。のインスタンスではありませんSystem。したがって、次を使用できます。

PrintStream stream = System.out;
stream.println("Foo");

(ちなみに、クラス、オブジェクト、フィールド、参照などを区別することは重要です。用語を正しく理解するために少し時間をかけると、正しく理解するのに役立ちます。)

于 2013-08-01T16:01:23.817 に答える
2

Systemアクセスできないプライベートコンストラクターがあります。

64    private System() {
65    }

ソース

System out = new System()再割り当てしようとしている場合System.out...それもできないため、初期化された後に再割り当てすることoutfinalできません(言うまでもなく、タイプPrintWriterは であり、 ではありませんSystem)。

于 2013-08-01T16:00:48.810 に答える
1

Java 構文がどのように機能するかを誤解しています。ではSystem.outSystemクラスです。ドット演算子は、それがそのクラスoutメンバーであることを意味します (この場合、括弧がないためメソッドではなく変数)、そのインスタンスではありません。outはタイプ のオブジェクトでありPrintStream、実際には s の新しいインスタンスを作成できますPrintStream(書き込み用にファイルを開くなど)。

Systemたまたま、自分でインスタンス化できない特別な Java クラスです。ほとんどのクラスでは、説明した構文を使用できます。 Car myCar = new Car();

于 2013-08-01T16:01:54.477 に答える
0

outSystemクラスの で、タイプは static member fieldPrintStreamです。そのアクセス指定子は.public final

これは起動時にインスタンス化され、ホストの標準出力コンソールにマップされます。

仕組みを見る

于 2013-08-01T16:02:09.780 に答える