Tôi có hai câu hỏi:Khi nào thì hồ bơi thay đổi?
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");
}
Tại sao
s1
vàs2
điểm đến cùng một đối tượng, trong khis1
vàs3
không? (Không sử dụngnew
từ khóa).Nếu tôi nhận được một chuỗi từ người sử dụng và thêm vào các mã trên những dòng này:
BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String name=in.readLine(); if(name.equals("test")) s1 = s1 + "xyz";
Nếu người dùng nhập
xyz
chương trình sẽ inNot equal
, khi người dùng nhập vào điều khác chương trình đầu raEqual
. Điều này có nghĩa là hồ bơi thay đổi thông qua việc thực hiện toàn bộ chương trình? Trình tối ưu hóa có hoạt động ở thời gian biên dịch và tiếp tục hoạt động trongruntime
không?