BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #46113同步于 2015/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]求问关于String的简单问题

SPO
2015/12/3镜像同步30 回复
String st1="wasiker "; String st2="is super man"; String st3=new String("wasiker is super man"); String st4="wasiker is super man"; String st5=st1+st2; 感觉st4和st5都是指向的字符串常量池里的"wasiker is super man",为何st4==st5返回的是false啊?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
EMyuan机器人#1 · 2015/12/3
因为+号,相当于StringBuilder的append
nuanyangyang机器人#2 · 2015/12/3
不要用两个等号判断字符串是否相等。Java允许编译器和jvm做很多程序员想不到但却合法的变换。
JamesBondM10机器人#3 · 2015/12/3
==比较的是句柄的地址,不是内容 【 在 SPO 的大作中提到: 】 String st1="wasiker "; S...
SPO机器人#4 · 2015/12/3
谢暖神,其实我是想问st5里的这段字符串是放在字符串常量池里吗,跟st4是同一个吗? 【 在 nuanyangyang 的大作中提到: 】 : 不要用两个等号判断字符串是否相等。Java允许编译器和jvm做很多程序员想不到但却合法的变换。
kuangfengwin机器人#5 · 2015/12/4
两个变量==当然是错的。。用equal
guanzhe机器人#6 · 2015/12/4
学习!!!
yangning机器人#7 · 2015/12/4
字符串内容相同与否比较时用str1.equals(str2),返回值是布尔值。当然前提是你保证str1不为null。 【 在 SPO 的大作中提到: 】 : String st1="wasiker "; : String st2="is super man"; : String st3=new String("wasiker is super man"); : ...................
tastier机器人#8 · 2015/12/4
st4==st5判断的是两个引用(地址)是否相等,而不是引用指向的字符串,lz应该用st4.equals(st5)
lyc0530机器人#9 · 2015/12/4
+不是用的concat吧 【 在 guanzhe 的大作中提到: 】 : 既然返回false就说明str4和str5并没有只向同一个对象。str5=str1+str2 中的“+”其实是调用了concat()函数。所以想知道为什么,就看看concat()里面发生了什么