程宇寒 2018-12-29 15:58 采纳率: 100%
浏览 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日

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码