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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神指导!

6 个回复

倒序浏览
String s = new String("hello")创建了两个对象,一个在常量池中,一个在栈内存中,String s = "hello"只创建了一个对象
回复 使用道具 举报
wsl123456 发表于 2016-7-1 10:13
String s = new String("hello")创建了两个对象,一个在常量池中,一个在栈内存中,String s = "hello"只创建 ...

对象不是应该在堆内存中吗?点解
回复 使用道具 举报
String有自己的常量池,String s1 = "hello"; 的hello是在常量池中寻找,没有就在常量池中添加.
而String 上 = new String("hello");是在堆里面创建一个hello
回复 使用道具 举报
teleman 发表于 2016-7-1 10:45
对象不是应该在堆内存中吗?点解

字符串常量是在常量池中的
比如String str = "abc";
表示在常量池中创建abc字符串,
回复 使用道具 举报
字符串常量是在常量池中的,堆内存中是复制的副本
回复 使用道具 举报
  后面的是s直接指向常量池的值'hello',前面的是先创建个String对象值指向常量池的hello,然后把新对象的地址给s
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马