一、==运算符的使用
1.基本数据类型变量:比较值是否相等,不一定类型要相同,存在自动类型提升
public void test1(){
int i=10;
int j=10;
double k=10.0;
System.out.println(i==j);//true
System.out.println(i==k);//int自动类型提升为double,结果仍为true
boolean b=true;
//System.out.println(b==i); 编译报错
char c=10; //字符的ASCII值
System.out.println(i==c);//true
char c1='A';
char c2=65;
System.out.println(c1==c2);//true
}
2.引用数据类型变量:比较两个对象的地址是否相同,即两个引用是否指向同一个对象实体
public void test2(){
Customer cust1=new Customer("tom",21);
Customer cust2=new Customer("tom",21);
System.out.println(cust1==cust2); //false,两个对象地址不同
String str1=new String("lxx");//String是一个类
String str2=new String("lxx");
System.out.println(str1==str2);//false
String str3="lxx";
String str4="lxx";
System.out.println(str3==str4); //true,两个引用指向同一个对象
}
二、equals()方法
1.这是一个方法,而不是一个运算符
2.不能用于基本数据类型,只适用于引用数据类型
3.Object类中equals()方法的定义:
public boolean equals(Object obj) {
return (this == obj);
}
Object类中equals()和==作用相同:比较两个对象的地址是否相同
4.像String、Date、File、包装类等都重写了Object类中的equals()方法,重写以后,比较的不是两个对象的地址
是否相同,而是比较两个对象的“实体内容”(属性)是否相同。
public void test3(){
Customer cust1=new Customer("tom",21);
Customer cust2=new Customer("tom",21);
System.out.println(cust1.equals(cust2)); //false,比较两个对象的地址
String str1=new String("lxx");
String str2=new String("lxx");
System.out.println(str1.equals(str2));//true,比较两个对象的实体内容
Date date1=new Date(32432525324L);
Date date2=new Date(32432525324L);
System.out.println(date1.equals(date2));//true,比较两个对象的实体内容
}