2012-03-14 10 views
2

System.out.printlnでは、 'out'はSystemクラスのメンバ変数で、PrintStreamクラスのインスタンスでもあります。PrintStreamクラスのオブジェクトであるSystemクラスのメンバであるかどうかは誰にでも教えてください。 System.out.printlnについて私を強調してください。クラスのオブジェクトは、他のクラスのメンバ変数にすることはできますか?

+0

リファレンス - http://docs.oracle.com/javase/1.5.0/docsを/api/java/lang/System.html#out – Coffee

答えて

6

ただパブリックstatic final変数。いつでもあなたが書く:あなたは(PrintStream参照)でその変数の値を取得し、その上にprintln()を呼んでいる

System.out.println("Foo"); 

。それが助け場合は、と考える:

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

System.outPrintStreamのインスタンス自体ではありません - それは変数です。変数のの値PrintStreamオブジェクトではなく、PrintStreamまたはサブクラスインスタンスのオブジェクトへの参照のオブジェクトです。

+0

私には意味がない質問に答えるための+1 ... – Nim

+0

@ニムこの質問はあなたにとってではなく、私には当てはまるかもしれません。 –

1

'out'はSystemクラスのpublic static finalメンバーです。

public class System { 
    public static final PrintStream out; 
    static { 
    out = new PrintStream() 
    ........... // more initialisation 
    } 
} 

もっと簡単な例を作成するには、文字列をクラスに「定数」として簡単に含めることができます。これは、クラスStringのオブジェクトで、他のクラスのメンバ変数です。

public class MyWidget { 
    public static final String WIDGET_NAME = "MyWidget"; 
    ... // other stuff 
} 

あなたは、あなたがにSystem.outにアクセスできるのと同じ方法で、この文字列にアクセスすることができます。

System.out.println("Widget name length is " + MyWidget.WIDGET_NAME.length()); 
関連する問題