Java 中 == 与equals() 的区别详解

306 阅读1分钟

Java 中 == 与equals() 的区别详解

== 与 equals()的区别可以说是一个被问烂的面试题,但这个确实在工作中十分实用,往往会因为我们的判断错误导致空指针问题的产生,下面我们一起来了解一下他们的区别。

==

  • 对于基本数据类型,我们只能使用==来判断两个数据的值是否相等

  • 对于一个基本数据类型,一个包装类型,也是会比较值的

    int a1 = 1;

    Integer a2= 1;

    a1 == a2; 结果为true

  • 对于字符串来说

    String s1 = "Jie";

    String s2 = "Jie"; s2首先会查看内存是否有Jie这个字符串,如果有直接指向s2

    s1 == s2; 结果为true

    String s3 = new String("Jie"); 会直接开辟新空间,创建全新对象

    S1 == s3; 结果为false

equals()

  • 对于基本数据类型,没有equals()方法

  • 对于引用数据类型,继承自Object类的equals()方法

    默认比较内存地址

    如String、Integer 之类都是重写了equals()方法,使其比较值

\