1.String s1 = new String("abc");
String s2 = new String("abc");
String s3 = "abc";
请问:一共有几个String对象,说明理由
答:
执行第一句时,先在String 池中创建一个“abc”对象,然后再在堆中new 一个"abc"的String 对象,
执行第二句时,先查找String 池中有没有"abc"对象,有则不再创建,然后再在堆中new一个"abc"对象,
执行第三句时,先查找String 池中有没有"abc"对象,有则不再创建,然后引用String 池中的"abc"对象,
所以:String 池中一个对象,堆中两个对象,一共有3个"abc"
另: String hello = "hello";
String hel = "hel";
String lo = "lo";
System.out.println(hello == hel + lo);//false
System.out.println(hello == "hel" + "lo");//true
System.out.println(hello == "hel"+ lo);//false
//只要有对象参与联合,都将在堆产生新的String对象
2.String s ="ABCDEFGH";
取出DEF
答:
s.substring(3, 6);
3.String s = "hello $someone$";
将$someone$替换成world
答:
s = s.replace("$someone$", "world");
本文详细解析了Java中String对象的创建过程及内存分配情况,并举例说明了字符串操作中的一些常见误区,如对象引用与字符串拼接的行为差异。
2232

被折叠的 条评论
为什么被折叠?



