目录
==运算符介绍
==是一个比较运算符
1. ==: 既可以判断基本类型,也可以判断引用类型。
2. ==: 如果判断基本类型,判断的是值是否相等。示例, int i=10, double d = 10.0
3. ==: 如果判断引用类型,判断的是地址是否相等,既判断是不是同一个对象。
==代码示例
package org.example.object_;
/**
* author 大力pig
*/
public class Equals01 {
public static void main(String[] args) {
A a = new A();
A b = a;
A c = b;
System.out.println(a==c); //true
System.out.println(b==c); //true
B obj = a;
System.out.println(c==obj);//true
int aa = 10;
double bb = 10.0;
System.out.println(aa==bb);//判断基本数据类型值是否相等, true
}
}
class B{}
class A extends B{}
equals方法
是Object类的方法,只能判断引用类型,默认判断地址是否相等,子类中往往重写该方法,用于判断内容是否相等。例如String类,Integer类底层equals都已经重写。
==和equals区别,代码演示
package org.example.object_;
/**
*@author 大力pig
*/
public class Equals02 {
public static void main(String[] args) {
Integer integer = new Integer(5);
Integer integer1 = new Integer(5);
System.out.println(integer == integer1); //false
System.out.println(integer.equals(integer1)); //true
String str1 = new String("pig");
String str2 = new String("pig");
System.out.println(str1 == str2);//false str1 和 str2地址不同
System.out.println(str1.equals(str2));//true
}
}
Integer类底层equals方法
我们可以从代码中看到Integer类已经重写了Object的equals方法,是去判断两个对象的值而不是地址。
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}