Java 中字符串的不變性
?public?class?HelloWorld?{
????public?static?void?main(String[]?args)?{
??String?s1?=?"imooc";
??String?s2?=?"imooc";
????????
????????//定義字符串s3,保存“I?love”和s1拼接后的內容
???String?s3?="I?love"+s1;
??//String?s3?=?new?String("imooc");//這個方法好像也可以執行呀!但是我不知道為什么可以,求解?
????????//?比較字符串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));
?}
}?
2016-09-25
你沒有按照他S3的要求來,方法是對的。
2016-08-22
肯定可以執行啊,結果也是一樣的,因為s1和s3、s3和s4的內存地址是不同,返回也是false。==是比較左右兩邊的內存地址,而方法equal(),才是比較值。
2016-07-04
上一節的東西你再看下。
2016-06-25
...........