A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题1:
String s1 = "abc";
String s2 = "abc";
请问上述程序在内存中创建了几个对象?毫无疑问,是一个对象(如果你觉得so easy,请直接阅读下个问题)。
因为JVM中有一个字符串常量池,新创建的字符串会先在字符串常量池查找是否存在相同的字符串,有则直接
赋值。


问题2:
String s3 = new String("bcd");
String s4 = new String("ef" + "123");

上述的s3和s4分别创建了几个对象。答案是,都是创建了两个对象。原因是new String()就会在堆中创建一个对象,
参数是字符串,也是一个对象。看到这里也许有人会觉得(“ef”+ "123")不是有两个吗?加上new一个就三个
对象了。那是由于字符串常量通过“ + ”操作时,编译器就进行了优化,相当于“ef123”。

1 个回复

倒序浏览
记下了{:3_46:}{:3_46:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马