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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马小夏 中级黑马   /  2015-3-9 08:45  /  1177 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1 = "abc";  String s2 = new String("abc");看到学长总结的博客说s1在内存中只有一个对象,s2在内存中有两个对象,是哪两个对象啊。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

9 个回复

倒序浏览
String s2=new String("abc") 中  后面括号里的“abc”是一个匿名String类对象 内存中会为这个匿名对象分配空间,这是第一个对象。 而 new关键字的作用也是要创建一个对象 new String(“abc”) 这个整体无论括号里是“abc”还是“nba” 只要符合String类的创建规则 也是在内存中创建了一个String类对象这是第二个对象

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
wenke 发表于 2015-3-9 09:42
String s2=new String("abc") 中  后面括号里的“abc”是一个匿名String类对象 内存中会为这个匿名对象分配 ...

那s2指向的是哪个对象的
回复 使用道具 举报
  String类里有个构造方法 String(String original)  可以接收一个String类对象 重新new一个相同内容的对象 不知道就去查api “abc”是内存里一个匿名无引用的对象   s2是一个引用指向内存另一个对象“abc”敲字真麻烦 我刚来论坛 听你这么问终于也是明白为什么那些大牛们都不屑回答你这种问题了   课本视频没看多少就开始一个劲的问些基础问题   无语   
回复 使用道具 举报
wenke 发表于 2015-3-9 13:07
String类里有个构造方法 String(String original)  可以接收一个String类对象 重新new一个相同内容的对象 ...

有问题就要大胆的问出来啊,论坛中再大的牛也是从菜鸟过来的。看了你的回答,理解的也不清楚
回复 使用道具 举报
s2两个对象 大致画了一下。

无标题.png (52.4 KB, 下载次数: 25)

无标题.png
回复 使用道具 举报
杨佳名 发表于 2015-3-9 13:52
s2两个对象 大致画了一下。

这次是真的弄清楚了,谢谢
回复 使用道具 举报
“abc“已经是字串常量,如果把它new了,在给s就等于创建了一个新的字符串。
回复 使用道具 举报
还是有些迷糊
回复 使用道具 举报
好吧,后面的内容还没学,看着是有点晕。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马