== 和 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
posted @ 2022-06-24 19:35  小冷漠  阅读(34)  评论(0编辑  收藏  举报