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

© 云雀 中级黑马   /  2015-7-10 13:42  /  201 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = new String(“hello”)和String s = “hello”;的区别?

8 个回复

倒序浏览
用new会创建至少一个对象,如果常量池没有对应的字符串,就会创建两个.
    一个是在堆内存中创建的,一个是在常量池中创建的.
直接的话,会最多创建一个对象.如果常量池没有对应的字符串,就会创建一个.
       直接在常量池中创建一个.
一般答都是 new会创建两个对象,直接是创建一个对象.
回复 使用道具 举报
String str = "hello"; 先在内存中找是不是有"hello" 这个对象,

如果有,就让str指向那个"hello".如果内存里没有"hello",就创建一个新的对象保存"hello".

String str=new String ("hello") 就是不管内存里是不是已经有"hello"这个对象,

都新建一个对象保存"hello"
回复 使用道具 举报
学习了啊。。。。。
回复 使用道具 举报
还没学到这里 看到一楼明白了
回复 使用道具 举报
String s = “hello”的都放在常量区;new出来的就是对象, new String的对象放到了堆里面。
回复 使用道具 举报
String str = "hello"; 先在内存中找是不是有"hello" 这个对象,

如果有,就让str指向那个"hello".如果内存里没有"hello",就创建一个新的对象保存"hello".

String str=new String ("hello") 就是不管内存里是不是已经有"hello"这个对象,

都新建一个对象保存"hello"
回复 使用道具 举报
顶一下吧。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马