为了账号安全,请及时绑定邮箱和手机立即绑定

Java字符串比较问

Java字符串比较问

慕森卡 2019-03-12 13:15:41
如题:public class T{public static void main(String[] agrs) {String s1 = "test";String s2 = "test";     System.out.println(s1 == s2);     T1 t1 = new T1();     T1 t2 = new T2();    System.out.println(t1.t() == t2.t()); }}class T1(){String t1(){return "test";}}class T1(){String t1(){retrun "test";}}输出的结果是: false true第二结果为什么是true。
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这个问题你需要从String创建的两种方法来看
1.String s1 = new String("test");
2.String s1 = "test";
1.jvm会马上创建一个String对象,然后将该对象的引用返回给用户.
2.jvm首先会在对象池中是否存放有该String对象,如果有,则返回已有的String对象给用户
然后你用的都是第二种 所以==是一定会相等的,因为都是同一个对象
这是我的一些理解,希望对你有帮助

查看完整回答
反对 回复 2019-04-26
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

字符串常量比较 没有涉及到对象比较 所以比较的是值


查看完整回答
反对 回复 2019-04-26
  • 3 回答
  • 0 关注
  • 491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信