結果很機車耶...
String s1 = "Hello world!";
String s2 = "Hello world!";
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
System.out.println("s1==s2: " + (s1 == s2));
s1 = "Hello world!Hello world!".substring("Hello world!".length());
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
System.out.println("s1==s2: " + (s1 == s2));
大概是因為substring出來的String是放在正常的heap
而不是Pool
2 則留言:
要用這樣:
System.out.println("s1==s2: " + (s1.contentEquals(s2));
原因是:
Java 的 "==" 比的是參照,不是參照指向的內容。
沒錯...
可是String是特別的物件
和小整數還有char一樣,是重複參照的
同樣的字串也會被重複參照
所以第一段的==才會true啊
可是substring出來的會是新物件
...
就不知標準是怎樣
張貼留言