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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马嘉 中级黑马   /  2014-11-11 07:05  /  1328 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new String 和直接赋值的区别?
没弄明白,求大神解答一下,谢谢

9 个回复

倒序浏览
new String 是建立新的实例对象   而赋值是给原有的对象赋值   
回复 使用道具 举报
本帖最后由 我就是那匹黑马 于 2014-11-11 09:49 编辑

String s1 = new String("abcd3");
String s2 = "abcd3";

String是一个  new 又一个  是两个对象   所以 s1 != s2;
但是他们的内容一样      所以   s1.equals(s2);
回复 使用道具 举报
关于这个问题,我发帖讨论过,给你参考下:http://bbs.itheima.com/thread-150754-1-1.html
回复 使用道具 举报
MVP 中级黑马 2014-11-11 10:12:52
报纸
new String它会在堆中创建一个新的对象,不管缓冲区是否有该对象。而直接赋值,它会先从缓冲区里找是否有该对象,如果有的话,会直接应用该对象,没有的话,才有在缓冲区里新建一个对象。直接赋值的好处就是减少内存的开销。
回复 使用道具 举报
就哭了好久来看很厉害
回复 使用道具 举报
3楼正解!
回复 使用道具 举报
马嘉 中级黑马 2014-11-12 07:18:56
8#
我就是那匹黑马 发表于 2014-11-11 09:47
String s1 = new String("abcd3");
String s2 = "abcd3";

谢谢你的总结
回复 使用道具 举报
3楼正解!
回复 使用道具 举报
wyxc 中级黑马 2014-11-12 09:24:37
10#
昨天刚看到这里,二者最明显的区别是:直接赋值的为一个对象,通过new String("")有二个对象,new 是一个,引号内的是一个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马