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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

王银龙

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 王银龙 初级黑马   /  2013-7-29 21:56  /  1117 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-7-30 11:06 编辑

String str = “abc”;与 String str2 = new String("abc")有什么分别,老毕的没怎么看懂,
还有就是空串String str3 = “”;与 String str4 = null;又有什么分别呢?

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

5 个回复

倒序浏览
String str = “abc”;   有一个对象
String str2 = new String("abc")    有两个对象 参考API String类构造方法public String(String original)  初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;
                                           换句话说,新创建的字符串是该参数字符串的副本。
String str3 = “”;    指向一个对象
String str4 = null;    指向为空

希望能帮到你   共同学习哈

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
而另一个是先在栈中创建一个对String类的对象引用变量str2,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str2指向”abc”,如果已经有”abc” 则直接令str2指向“abc”。
回复 使用道具 举报
new出来的是存在于堆内存中,而一般的是存在栈里面的。另外,字符串默认赋值的是null。希望可以帮到你!!
回复 使用道具 举报

String str = “abc”;与 String str2 = new String("abc")
s1在内存中有一个对象
s2在内存中有两个对象
我的理解是
String str = "abc"等同与int x = 4;一样  str是一个变量名 String是变量类型  对象的话只有“abc”一个对象
String str2 = new String("abc") 等同于Person p = new Person("abc")  p是一个对象  "abc" 也是一个对象 所以s2在内存中有2个对象

str3是指向一个引用 栈内存中开辟了空间建立了对象 对象的地址值指向了堆内存中的str3
str4是没有指向引用

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
String str = “abc”;   有一个对象str
String str2 = new String("abc")    有两个对象str2和new string("abc")
String str3 = “”;    指向一个对象
String str4 = null;    指向为空

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马