黑马程序员技术交流社区

标题: 福利!一道易错误的面试题... [打印本页]

作者: 海绵宝宝的微笑    时间: 2015-6-13 12:54
标题: 福利!一道易错误的面试题...
String s="abc";和String s=new String("abc")的区别?
其实你就需要回答一点就行了,别的都不用说
就是在对内存上,前者只创建了一个对象,而后面的创建了两个对象

作者: micro_hx    时间: 2015-6-13 15:47
其实我想说,前者不一定创建了新的对象,如果常量池中存在“abc”字符串,那么就直接指向它。。。。
作者: Foundmoon    时间: 2015-6-13 16:22
具体的是,第二句是new了一个新对象,然后新对象指向了常量池的"abc"
作者: 乔栋    时间: 2015-6-13 19:00
楼主讲的不清楚啊
不过好心。谢谢
作者: FTD-2009    时间: 2015-6-13 20:30
谢谢楼主的提醒
作者: 海绵宝宝的微笑    时间: 2015-6-14 21:55
micro_hx 发表于 2015-6-13 15:47
其实我想说,前者不一定创建了新的对象,如果常量池中存在“abc”字符串,那么就直接指向它。。。。 ...

不是的,在内存中字符串都是单个的字符数组,只要有了字符串,就是在堆内存中开辟了一个新空间,就会把地址值赋给前面的变量!没有其他情况




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