黑马程序员技术交流社区

标题: String s = new String("hello");和String s = "hello"的区别? [打印本页]

作者: caesar_QMwS4    时间: 2016-7-1 09:16
标题: String s = new String("hello");和String s = "hello"的区别?
求大神指导!
作者: wsl123456    时间: 2016-7-1 10:13
String s = new String("hello")创建了两个对象,一个在常量池中,一个在栈内存中,String s = "hello"只创建了一个对象
作者: teleman    时间: 2016-7-1 10:45
wsl123456 发表于 2016-7-1 10:13
String s = new String("hello")创建了两个对象,一个在常量池中,一个在栈内存中,String s = "hello"只创建 ...

对象不是应该在堆内存中吗?点解
作者: syso信任    时间: 2016-7-1 13:46
String有自己的常量池,String s1 = "hello"; 的hello是在常量池中寻找,没有就在常量池中添加.
而String 上 = new String("hello");是在堆里面创建一个hello
作者: wsl123456    时间: 2016-7-1 17:16
teleman 发表于 2016-7-1 10:45
对象不是应该在堆内存中吗?点解

字符串常量是在常量池中的
比如String str = "abc";
表示在常量池中创建abc字符串,
作者: 逆风搁浅    时间: 2016-7-1 17:22
字符串常量是在常量池中的,堆内存中是复制的副本
作者: 小雨皮    时间: 2016-7-1 18:50
  后面的是s直接指向常量池的值'hello',前面的是先创建个String对象值指向常量池的hello,然后把新对象的地址给s




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2