java的字面量的内存是不可变的麽?
博彩导航网站排行榜
博彩导航网站排行榜
当前位置 : 博彩导航网站排行榜 > 博彩导航网站排行榜

java的字面量的内存是不可变的麽?

譬如 

String foo= "a";
String bar= "a";

那么,在上面的这个栗子中,两个"a"本身是统一份内存空间麽?

如果String foo="a" + "b"
如果String bar="ab"

这里是否存在运算,先计算出"a"+"b"的字面量(“ab”),初始化"ab“ 后,接下来的任何

String x="ab",都是对之前"ab"的字面量的引用持有呢?


Update
String foo="a" + "b" 这条语句,假设在之前没有"a"和”b“的init.那么在这里创建了
”a“,"b","ab"呢
还是只创建了"ab"呢?

  1. String foo = "a"; String bar = "a";这两个是一份内存空间,都在字符串常量池

  2. String foo="a" + "b",String bar="ab";这两个也是,"a" + "b"在编译期就会被优化为"ab"

  3. String foo="a" + "b"只创建了“ab”,同上

是的,之前定义了String bar="ab",后面再定义String x="ab",此时bar和x都指向同一个对象。
除非你使用new String"ab"。

对于这个问题:
String foo="a" + "b" 这条语句,假设在之前没有"a"和”b“的init.那么在这里创建了
”a“,"b","ab"呢
还是只创建了"ab"呢?
答案肯定是创建了3个字符串对象,"a","b","ab"。所以频繁的进行字符串拼接操作会浪费内存,需要使用StringBuffer或者StringBuilder来进行拼接操作。

最新文章

广告位

博彩导航网站排行榜