美文网首页
==与equals()的区别

==与equals()的区别

作者: 熊猫的雄 | 来源:发表于2018-11-17 10:18 被阅读0次

1、如果比较的是常量,则 == 与 equals() 都是比较值知否相当
2、如果是对象间的比较,== 比较对象在堆中的地址,不比较值;equals() 则是先比较地址在比较值,下面是 equals() 的源码

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

举例:

public class userTest {
    public static void main(String[] args) {
            System.out.println("常量间比较:");
            String a1 = "aaa";
            String b1 = "aaa";
            System.out.println(a1==b1);
            System.out.println(a1.equals(b1));
            
            System.out.println("对象间比较:");
            String a2 = new String("aaa");
            String b2 = new String("aaa");
            System.out.println(a2==b2);
            System.out.println(a2.equals(b2));
    }
}
结果: 比较结果.PNG

a1、b1 是常量,所有 == 和 equals() 比较他们之间的值,都返回true;
a2、b2 是对象, == 比较对象的在堆中的地址,地址不等所以返回false,equals() 则先比较对象堆中的地址(看上面源码可知),地址不等,再比较对象的值。

相关文章

  • Java 拆箱与装箱

    本文知识点 基本类型与引用类型 == 与 equals() 的区别 equals() 和 hashCode 的关系...

  • "=="与equals区别

    "=="当比较的是基本数据类型,比较的是值当比较的是引用类型,比较的是地址 a.equals(b)一般情况下,比较...

  • “==”与equals区别

    “==”比较地址 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equa...

  • Java字符串

    一、常用方法String str=""; 二、==与equals的区别 ==比较的是内存地址 equals比较的是...

  • Object,String,StringBuffer,Math,

    1,Object类.Equals方法 2,String类的创建方式以及==与Equals的区别 3,字符串

  • ==与equals()的区别

    1、如果比较的是常量,则 == 与 equals() 都是比较值知否相当2、如果是对象间的比较,== 比较对象在堆...

  • ==与equals的区别

    https://www.cnblogs.com/chris-oil/p/7253264.html

  • equals与==的区别

    ==: 1.基本类型比较用==比较的是存储的数值的大小; 2.引用类型比较用==比较的是引用类型的变量所指向的对象...

  • == 与 equals的区别

    引入 == - 基本数据类型(也称原始数据类型) byte, short, char, int long, flo...

  • equals()与==的区别

    1.下图的问题? false,true。==比较的是str1和str2两个对象的地址。 equals则是比较的是两...

网友评论

      本文标题:==与equals()的区别

      本文链接:https://www.haomeiwen.com/subject/uigvfqtx.html