字符串比较==和equals

        String a = "111";
        String b = "111";
        String c = new String("111");
        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println(a.equals(b));
        System.out.println(a.equals(c));

结果:

true
false
true
true
  1. "=="比较的是字符串的地址,所以第二个结果输出为false
    但是第一个输出的结果是true,这就要引出java对象池的概念。
    对象池:JVM底层会自动维护一个字符串的对象池,如果现在采用直接赋值的形式进行String的对象实例化,该对象会自动保存在这个对象池中。如果下次继续使用直接赋值的模式声明String对象,此时对象池若有指定内容,则直接使用;如果没有,则开辟新的堆空间将其保存在对象池中供下次使用
  2. "equals"比较的是内容
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务