為什么s1是變量? ( // s1是變量,s4在運行時才知道具體值,所以s3和s4是不同的對象) 當時==時是比較兩個變量的地址?equals比較的是他們的內容值?
public class HelloWorld {
? ? public static void main(String[] args) {
String s1 = "imooc";
String s2 = "imooc";
? ? ? ??
? ? ? ? //定義字符串s3,保存“I love”和s1拼接后的內容
String s3 = "I love"+s1;
? ? ? ? // 比較字符串s1和s2
// imooc為常量字符串,多次出現時會被編譯器優化,只創建一個對象
System.out.println("s1和s2內存地址相同嗎?" + (s1 == s2));
? ? ? ??
? ? ? ? //比較字符串s1和s3
System.out.println("s1和s3內存地址相同嗎?" + (s1 == s3));
String s4 = "I love " + s1;
? ? ? ? ?//比較字符串s4和s3
// s1是變量,s4在運行時才知道具體值,所以s3和s4是不同的對象
System.out.println("s3和s4內存地址相同嗎?" + (s4 == s3));
}
}
2015-07-23
結果應該是true false false ??
s1 與 s2 是不同的,只是jvm它會檢測到你輸入的值都是一樣的,就會把s1 和 s2 同時指向在一起。所以,s1 == s2 ?這比較的是地址
而s4 s3 的值是相等的,當時它們指向的地址是不同的。所以是false