equals和==的区别
==的使用:
package test;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//比较的是基本数据类型的变量,比较两个变量保存的数据是否相等(不一定要类型相同)
int i = 10;
int j = 10;
double d = 10.0;
System.out.println(i == j);//true
System.out.println(i == d);//true
boolean b = true;
// System.out.println(i == b);//编译不通过
char a = 10;
System.out.println(a == i);//true
char c1 = 'A';
char c2 =65;
System.out.println(c1 == c2);//true
//比较的是引用数据类型变量,比较的是对象的地址值是否相等,
//即是否指向的是堆空间的同一个地址
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1 == p2);//false
}
}
class Person{
}
equals:
package test1;
import java.util.Date;
public class test2 {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1 == p2);//false
/*
* equals只是一个方法,并非运算符,只能适用于引用数据类型
* Object中equals的定义
* public boolean equals(Object obj){
* return (this == obj)
* }
* Object类中定义的equals()和==的作用是相同的,
* 比较两个对象的地址值是否相同,即是否指向同一地址值
* 像String、data、File、包装类等都重写了Object类中的equals方法,重写以后比较的不是
* 两个引用的地址值是否相同,而是比较两个对象的实体内容是否相同。
* 通常情况下,我们重写的equals方法:比较两个对象的实体内容是否相同,比较两个对象的属性是否相同
* 方法,
* */
String str1 = new String("str");
String str2 = new String ("str");
System.out.println(str1 == str2);//false
System.out.println("--------------");
System.out.println(p1.equals(p2));//false
System.out.println(str1.equals(str2));//true
Date date2 = new Date(32432525324L);
Date date1 = new Date(32432525324L);
System.out.println(date1.equals(date2));//true
}
}
class Person{
}