java ==和equals 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ==和equals 的区别相关的知识,希望对你有一定的参考价值。

以String类型举例

情景1 当声明2个变量 a,b比较值

String a = "test";
        String b = "test";
        boolean end = false;
        if(a==b) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 是显示相等 ,因为 ==是判断引用是否指向堆内存的同一块地址。 "test"是一个对象被a,b变量引用,所有啊a,b是相同指向,所有==判断,这个时候equals也相等

情景2 让2个变量 持有不同引用

String c = new String("test1");
        String d = new String("test1");
        end = false;
        if(c==d) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 显示不等 ,结论和上一条一致

情景3 解决情景2的问题

String g = new String("test1");
        String h = new String("test1");
        end = false;
        if(g.equals(h)) {
            end = true;
        }
        
        System.out.println(end?"两个字符串相等":"mmp,不等");

结果 显示相等 ,equals 在处理不同引用对象 正确比较堆中内容的方法

结论,关心内容相等应该使用equals为好

以上是关于java ==和equals 的区别的主要内容,如果未能解决你的问题,请参考以下文章

java 中 “==” 和 equals 的区别

Java ==和equals的区别

Java ==和equals有什么区别?

Java 中 equals 和 == 的区别

如何重构这个 Java 代码片段

java 中equals和==的区别