私は2つの質問がある:プールはいつ変更されますか?
public static void main(String[] args) {
String s1 = "bla";
String s2 = "b" +"l" + "a";
String s3 = "b".concat("l").concat("a");
if(s1 == s2)
System.out.println("Equal");
else
System.out.println("Not equal");
if(s1 == s3)
System.out.println("Equal");
else
System.out.println("Not equal");
}
なぜ
s1
と同じオブジェクトへs2
ポイント、s1
とs3
がないのに対し、していますか? (new
キーワードの使用はありません)。私は、ユーザからの文字列を取得し、上記のコードにこれらの行を追加した場合:ユーザーは、ユーザーが別のもののプログラムの出力を入力したときに
xyz
プログラムは、Not equal
を印刷します入るとBufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String name=in.readLine(); if(name.equals("test")) s1 = s1 + "xyz";
を
Equal
。これはプログラム全体の実行によってプールが変化することを意味しますか?オプティマイザはコンパイル時に機能し、はruntime
で引き続き動作しますか?