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);