public static void main(String[] args){
one();
two();
three();
}
public static void one() {
String s1 = "hill5";
String s2 = "hill" + 5;
System.out.println(s1==s2);
}
public static void two() {
String s1 = "hill5";
int i =5;
String s2 = "hill" + i;
System.out.println(s1==s2);
}
public static void three() {
String s1 = "hill5";
String s2 = "hill" + s1.length();
System.out.println(s1==s2);
}
Output làJava String literals nối
true
false
false
literals chuỗi sử dụng quá trình thực tập, thì tại sao two()
và three()
được false.I có thể hiểu trong trường hợp three()
nhưng two()
không clear.but cần lời giải thích hợp cho cả hai trường hợp.
Ai đó có thể giải thích lý do chính đáng không?
đọc câu hỏi này mà tôi đã hỏi http://stackoverflow.com/questions/16729045/behavior-of-string-literals-are-confusing – anshulkatta
Để giải trí, bạn cũng có thể thử 'hai' với' final int i = 5 'thay vào đó (nó sẽ in true thay vì false, bởi vì bây giờ' i' là hằng số). – assylias
"mỗi lần ai đó so sánh các chuỗi với == một nhà phát triển khóc ..." –