==和equals的区别
1:= =判断对象是否是同一个,地址是否相同
2:equals 判断对象的内容是否相同,默认调用Object的equals的方法,而该方法判断的地址是否相同
3:如果equals的方法没有重写,==和equals的效果一样
没有重写的情况下
Object发话了: 调戏我家的equals
,还不给钱买化妆品?我让你们处处不合
public static void main(String []args){
List<Car>cars=new ArrayList<Car>();
//创建i个汽车
for(int i=0;i<10;i++){
cars.add(new Car("Benz-"+i));
}
//判断是否包含Benz-0
Car c=new Car("Benz-0");
System.out.println(cars.contains(c));
//判断存不存在时,调用的时equals
}
class Car{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car(String name) {
super();
this.name = name;
}
}
结果:显然不相等,地址不同
false
重写equals
public static void main(String []args){
List<Car>cars=new ArrayList<Car>();
for(int i=0;i<10;i++){
cars.add(new Car("Benz-"+i));
}
Car c=new Car("Benz-0");
System.out.println(cars.contains(c));
}
class Car{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car(String name) {
super();
this.name = name;
}
public boolean equals(Object obj) {
return this.name.equals(((Car)obj).name);
}
结果:显然相等,名字一样
true
重写toString方法
没有重写的情况下
public static void main(String[] args) {
List<Car> cars =new ArrayList<Car>();
for(int i=0;i<10;i++) {
cars.add(new Car("Benz-"+i));
}
//增强for循环
for(Car c:cars) {
System.out.println(c);
}
}
class Car{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car(String name) {
super();
this.name = name;
}
结果:
fanyongjun.Car@52cc8049
fanyongjun.Car@5b6f7412
fanyongjun.Car@27973e9b
fanyongjun.Car@312b1dae
fanyongjun.Car@7530d0a
fanyongjun.Car@27bc2616
fanyongjun.Car@3941a79c
fanyongjun.Car@506e1b77
fanyongjun.Car@4fca772d
fanyongjun.Car@9807454
**??**怎么不是我创建的Benz?刚买的就被偷了?
//为什么会打印出地址 toString方法
//调用getClass方法
//return getClass().getName()+"@"+Integer.toHexString(hashCode());
//hashCode 调用的本地
解决重写toString方法
class Car{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car(String name) {
super();
this.name = name;
}
public String toString() {
return "car{"+name+"}";
}
}
结果:
car{Benz-0}
car{Benz-1}
car{Benz-2}
car{Benz-3}
car{Benz-4}
car{Benz-5}
car{Benz-6}
car{Benz-7}
car{Benz-8}
car{Benz-9}