== 和equals()的区别
/**
* == 和equals的区别
* 一、回顾 == 的使用
* ==:运算符
* 1、可以使用在基本数据类型变量和引用数据类型变量中
* ` 不同的类型可以比较,
* 2、如果比较的是基本数据类型变量,比较两个变量保存的数据是否相等,(不一定类型形同)
* 如果比较的是引用数据类型变量,比较的两个对象的地址值是否相同。即两个引用是否指向同一个对象实体
*
* 二、equals()方法使用:
* 1、是一个方法,而非是运算符
* 2、只能适用于引用数据类型
* 3、Object类中equals()方法的定义:
* 在Object对象中定义的equals()方法和==的作用是相同的
* public boolean equals(Object obj) {
return (this == obj);
}
* 4、像String、Date、File、包装类都重写了Object类中的equals()方法,比较的不是两个引用的地址是否相同,比较的是两个实体内容是 否相同
*
* @author zhangjunwei
*
*/
public class EqualsTest {
public static void main(String[] args) {
// comparedengyu();?
compareyinyong();
}
/**
* 比较的是基本数据类型变量
*/
public static void comparedengyu() {
int i=10;
int j=10;
double d = 10.0;
System.out.println(i== j);//true
System.out.println(i== d);//true
char c = 10;
System.out.println(i== c);//true
char c1 = 'A';
char c2 = 65;
System.out.println(c1 == c2);//true
}
/**
* 比较引用数据类型
*/
public static void compareyinyong() {
Customer c1 =new Customer("Tom",21);
Customer c2 =new Customer("Tom",21);
System.out.println(c1 == c2);//false
String str1= new String("zhangjunwei");
String str2= new String("zhangjunwei");
System.out.println(str1 == str2);//false
System.out.println("*****equal()方法的使用****");//false
// boolean java.lang.Object.equals(Object obj)
// public boolean equals(Object obj) {
// return (this == obj);
// }
// 其中object对象中是通过== 来比较的。
System.out.println(c1.equals(c2));//false
System.out.println(str1.equals(str2));//true
Date date1 = new Date(+65464654646L);
Date date2 = new Date(+65464654646L);
System.out.println(date1.equals(date2));//true
}
}