equals()和==的区别(Java)

equals()和==的区别(Java)

“==”用法

  • 基本数据类型:双等号比较的是值
  • 引用数据类型:双等号比较的是内存中的地址

equals()用法

  • 没有重写equals()方法:比较内存中的地址
  • 重写了equals()方法:参照重写的方法

重写了equals()方法的类:


String:

重写的equals()方法比较字符串内容;

字符串判等全部使用equals()方法,双等号是根据内存地址进行判断。

判断字符串是否为null时用==,判断是否为空串时比较长度 eg. string.length()!=0


Integer:

重写的equals()方法比较整形变量的值;

注:当给Integer对象赋值时,-128到127之间的值会缓存到IntegerCache.cache中,所以给Integer对象赋值在-128到127之间时,返回的是同一个对象,此时用双等号和equals()方法比较都为true

Java自动装箱规范要求boolean、byte、char<=127,介于-128~127之间的short和int被包装到固定的对象中。

注:所有相同类型的包装类对象之间值的比较,全部使用equals()方法比较。


枚举类:

eg:

public enum Size {
    
    SMALL,MEDIUM,LARGE,EXTRA_LARGE};

这个声明定义的类型其实是一个类,它刚好有4个实例。比较两个枚举类型的值时,永远不需要调用equals,直接调用“==”即可。


类对象(反射):

虚拟机为每个类型管理一个Class对象,因此可以利用==运算符实现两个类对象比较,eg:

Employee e = new Employee();
if(e.getClass()==Employee.class){
    
    
    
}

发现新的再更新 #_#

扫描二维码关注公众号,回复: 12869436 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_42026590/article/details/109744536