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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗旭维 中级黑马   /  2012-4-27 09:48  /  1899 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = new String("xyz");
说这句代码创建了两个对象?谁能解释下。

5 个回复

倒序浏览
s是一个对象,“xyz”是另一个对象,其中s指向了“xyz”的地址值,所以是两个对象
回复 使用道具 举报
施俊 发表于 2012-4-27 09:51
s是一个对象,“xyz”是另一个对象,其中s指向了“xyz”的地址值,所以是两个对象 ...

哦,对是这样的。
回复 使用道具 举报
使用new关键字 不管内存中是否存在该对象,都会在堆内存中划分一块区域储存
所以一个是存在于字符串池中的"xyz",一个是存在于堆内存中由栈内存中的s引用。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
金超 发表于 2012-4-27 09:59
使用new关键字 不管内存中是否存在该对象,都会在堆内存中划分一块区域储存
所以一个是存在于字符串池中的" ...

精辟,说的很对
回复 使用道具 举报
new String("xyz")这句话在内存中开辟了一块区域,用于字符串“xyz”
String s=new String(“xyz”);定义了一个字符串变量“s”用于储存字符串“xyz”的地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马