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
)。ユーザーから文字列を取得し、上記のコードに次の行を追加すると、次のようになります。
BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String name=in.readLine(); if(name.equals("test")) s1 = s1 + "xyz";
ユーザー
xyz
がプログラムに入ると印刷さNot equal
れ、ユーザーが別のものを入力するとプログラムが出力しますEqual
。これは、プログラム全体の実行によってプールが変化することを意味しますか?オプティマイザーはコンパイル時に機能し、引き続き機能しruntime
ますか?