String オブジェクトはnull
構築時に割り当てられます。つまり、 を宣言するnew Tester()
と、text
フィールドが割り当てられnull
ます。これはすべてのオブジェクト タイプのデフォルト値であり、すべてのプリミティブにはゼロが割り当てられます (プリミティブがブール値の場合は false)。
何も割り当てられておらず、出力のデフォルトの動作はnull
リテラル テキストを出力することです"null"
。
2番目の質問について-これが機能しない理由:
System.out.println(test.text());
text()
を返すvoid
か、何も返さないメソッド呼び出しです。メソッド呼び出しの結果として何も返されないため、何も出力できません。
呼び出しをtext()
print ステートメントの前に移動して、フィールドに適切にデータが入力されるようにします。
Tester test = new Tester();
test.text();
System.out.println(test.text);
...そして、次のような規則があります。構築時にフィールドにデータを入力したい場合は、それを引数として受け入れるコンストラクターを作成します。
public Tester(String text) {
this.text = text;
}
text()
それを構築するとき、余分な;の呼び出しについて心配する必要はありません。フィールドを印刷するだけです。
Tester test = new Tester("abc");
System.out.println(test.text);