黑马程序员技术交流社区

标题: String相加的问题 [打印本页]

作者: ruibocool    时间: 2015-4-22 22:36
标题: String相加的问题
                String str1=“JavaEE”;
                String str2="Android";
                String str3="JavaEE"+"Android";
                String str4=str1+str2;
                System.out.println(str3==str4);

为何返回的是false
作者: caotierong    时间: 2015-4-22 22:58
字符串相加当有变量参与时,其实它会做一个操作,在堆内存中new一个对象,所以它的地址值和常量池中的不一样。
作者: 黄文昭    时间: 2015-4-23 00:10
有引用类型变量参与运算,地址值不一样吧!
作者: 优质码农    时间: 2015-4-23 00:33
比较的是地址,没重写方法
作者: 横看成岭侧成锋    时间: 2015-4-23 09:30
本帖最后由 横看成岭侧成锋 于 2015-4-23 09:32 编辑

不错,顶一下
作者: Mr.Kaizhei    时间: 2015-4-23 09:46
优质码农 发表于 2015-4-23 00:33
比较的是地址,没重写方法

==怎么重写????
作者: stame01    时间: 2015-4-23 11:36
==比较的是内存地址,3和4是两个对象,string应该用.equals()比较内容是否一样。
作者: ruibocool    时间: 2015-4-23 16:39
caotierong 发表于 2015-4-22 22:58
字符串相加当有变量参与时,其实它会做一个操作,在堆内存中new一个对象,所以它的地址值和常量池中的不一 ...

String str4=str1+str2;相当于在内存中new一个新对象,而str3="JavaEE"+"Android";还是指向常量池的对象




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