== 和 equal()的区别
==和equals()的区别
==: 运算符
1.可以使用在基本数据类型变量和引用数据类型变量中
2.如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(不一定类型要相同)
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
3.如果比较的是引用数据类型变量: 比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
Customer cust1=new Customer("Tom",21);
Customer cust2=new Customer("Tom",21);
System.out.println(cust1==cust2); //false
String str=new String("com");
String str2=new String("com");
System.out.println(str==str2); //false
equals()
1.是一个方法,而非运算符
2.只适用于引用数据类型
3.Object类中equals()定义:
public boolean equals(Object obj){
return (this==obj);
}
说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
Customer cust1=new Customer("Tom",21);
Customer cust2=new Customer("Tom",21);
System.out.println(cust1.equals(cust2)); //false
注意:
像String,Date,File,包装类等重写了Object类中的Equlas()方法,重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同
Date date1=new Date(32432525324L);
Date date2=new Date(32432525324L);
System.out.println(date1.equals(date2)); //true
String str=new String("com");
String str2=new String("com");
System.out.println(str.equals(str2)); //true
引用常量:String
String t1="com"; //常量 存放的常量区中,常量区没有重复的值
String t2="com"; // t1 t2指向的引用地址相同
System.out.println(t1==t2); //true
System.out.println(t1.equals(t2)); //true