Java基础
1.和equals的区别是什么?
== 是关系运算符,equals() 是方法,结果都返回布尔值
Object 的 == 和 equals() 比较的都是地址,作用相同
== 作用:
基本类型,比较值是否相等
引用类型,比较内存地址值是否相等
不能比较没有父子关系的两个对象
equals()方法的作用:
JDK 中的类一般已经重写了 equals(),比较的是内容
自定义类如果没有重写 equals(),将调用父类(默认 Object 类)的 equals() 方法,Object 的 equals() 比较使用了 this == obj
可以按照需求逻辑,重写对象的 equals() 方法(重写 equals 方法,一般须重写 hashCode 方法)
2.基本类型和包装类对象使用 == 和 equals进行比较的结果?
值不同,使用== 和equals()比较都返回false
值相同:
使用==比较:
基本类型—基本类型、基本类型—包装对象返回true
包装对象—包装对象返回false
缓存中取的包装对象比较返回true (原因是 JVM 缓存部分基本类型常用的包装类对象,如 Integer -128 ~ 127 是被缓存的)
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2); //打印true
System.out.println(i3==i4); //打印false
使用equals()比较
包装对象—基本类型返回true
包装对象—包装对象返回true
不同类型的对象对比,返回false
byte b1 = 127;
Byte b2 = new Byte("127");
Byte b3 = new Byte("127");
System.out.println("Byte 基本类型和包装对象使用 == 比较 : " + (b1 == b2));//true
System.out.println("Byte 基本类型和包装对象使用 equals 比较 : " + b2.equals(b1));//true
System.out.println("Byte 包装对象和包装对象使用 == 比较 : " + (b2 == b3));//false
System.out.println("Byte 包装对象和包装对象使用 equals 比较 : " + b2.equals(b3));//true
System.out.println();
注:原文链接https://blog.csdn.net/weixin_44143324/article/details/106173626