lehui1028583476 2012-09-22 17:02
浏览 173
已采纳

Java字符串比较问

如题:

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。

  • 写回答

4条回答 默认 最新

  • lin358 2012-09-22 20:45
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题