黑马程序员技术交流社区

标题: 面试题 [打印本页]

作者: 马嘉    时间: 2014-11-11 07:05
标题: 面试题
new String 和直接赋值的区别?
没弄明白,求大神解答一下,谢谢
作者: 默默丶    时间: 2014-11-11 08:51
new String 是建立新的实例对象   而赋值是给原有的对象赋值   
作者: 我就是那匹黑马    时间: 2014-11-11 09:47
本帖最后由 我就是那匹黑马 于 2014-11-11 09:49 编辑

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

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

谢谢你的总结
作者: zhangyangLengen    时间: 2014-11-12 08:52
3楼正解!
作者: wyxc    时间: 2014-11-12 09:24
昨天刚看到这里,二者最明显的区别是:直接赋值的为一个对象,通过new String("")有二个对象,new 是一个,引号内的是一个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2