我有兩個問題:泳池何時更換?
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
中工作?