返回信息流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啊?
这是一条镜像帖。来源:北邮人论坛 / java / #46113同步于 2015/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]求问关于String的简单问题
SPO
2015/12/3镜像同步30 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
谢暖神,其实我是想问st5里的这段字符串是放在字符串常量池里吗,跟st4是同一个吗?
【 在 nuanyangyang 的大作中提到: 】
: 不要用两个等号判断字符串是否相等。Java允许编译器和jvm做很多程序员想不到但却合法的变换。
字符串内容相同与否比较时用str1.equals(str2),返回值是布尔值。当然前提是你保证str1不为null。
【 在 SPO 的大作中提到: 】
: String st1="wasiker ";
: String st2="is super man";
: String st3=new String("wasiker is super man");
: ...................
+不是用的concat吧
【 在 guanzhe 的大作中提到: 】
: 既然返回false就说明str4和str5并没有只向同一个对象。str5=str1+str2 中的“+”其实是调用了concat()函数。所以想知道为什么,就看看concat()里面发生了什么