黑马程序员技术交流社区
标题:
面试题
[打印本页]
作者:
马嘉
时间:
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