Java 中字符串的不變性
?public?class?HelloWorld?{ ????public?static?void?main(String[]?args)?{ ??String?s1?=?"imooc"; ??String?s2?=?"imooc";
???????? ????????//定義字符串s3,保存“I?love”和s1拼接后的內(nèi)容 ???String?s3?="I?love"+s1; ??//String?s3?=?new?String("imooc");//這個(gè)方法好像也可以執(zhí)行呀!但是我不知道為什么可以,求解?
????????//?比較字符串s1和s2 ??//?imooc為常量字符串,多次出現(xiàn)時(shí)會被編譯器優(yōu)化,只創(chuàng)建一個(gè)對象 ??System.out.println("s1和s2內(nèi)存地址相同嗎?"?+?(s1?==?s2)); ???????? ????????//比較字符串s1和s3 ??System.out.println("s1和s3內(nèi)存地址相同嗎?"?+?(s1?==?s3)); ??String?s4?=?"I?love?"?+?s1; ?????????//比較字符串s4和s3 ??//?s1是變量,s4在運(yùn)行時(shí)才知道具體值,所以s3和s4是不同的對象 ??System.out.println("s3和s4內(nèi)存地址相同嗎?"?+?(s4?==?s3)); ?} }
?
2016-09-25
你沒有按照他S3的要求來,方法是對的。
2016-08-22
肯定可以執(zhí)行啊,結(jié)果也是一樣的,因?yàn)閟1和s3、s3和s4的內(nèi)存地址是不同,返回也是false。==是比較左右兩邊的內(nèi)存地址,而方法equal(),才是比較值。
2016-07-04
上一節(jié)的東西你再看下。
2016-06-25
...........