程宇寒 2018-12-29 15:58 采纳率: 73.3%
浏览 349
已采纳

java中String字符串==的疑问?

java中String字符串==的疑问?谁能帮忙解释和理解一下!顺便说一下底层的原理和运行规则?
直接po代码和截图

public class TestString {

    /** 
    * 测试String
    */
    public static void main(String[] args) {
        String a = "hello2";
        final String b = getStr2();
        String c = b + 2;
        String d = "hello2";
        String e = new String("hello2");
        String f = new String("hello2");
        String h = "hello";
        String j = h + 2;
        StringBuffer sb = new StringBuffer("hello2");
        StringBuilder sb2 = new StringBuilder("hello2");
        String k = getStr2();
        String m = k + 2;
        System.out.println("c结果" + (a == c));
        System.out.println("d结果" + (a == d));
        System.out.println("e结果" + (a == e));
        System.out.println("f结果" + (a == f));
        System.out.println("f.toString()结果" + (a == f.toString()));
        System.out.println("j结果" + (a == j));
        System.out.println("sb.toString()结果" + (a == sb.toString()));
        System.out.println("sb2.toString()结果" + (a == sb2.toString()));
        System.out.println("m结果" + (a == m));
    }

    public static String getStr() {
        String text = "hello";
        return text;
    }

    public static String getStr2() {
        return "hello";
    }

}

图片说明
图片说明

  • 写回答

4条回答 默认 最新

  • 才沐木 2018-12-29 08:04
    关注

    String是引用类型,可以理解为c语言的指针,即其是指向某个地址的值,d结果为true是因为原来池里面已经有了估a和d指向的是同一个地址的值,如果是判断值是否相等可以用equals

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

报告相同问题?

问题事件

  • 已采纳回答 3月21日