一、equals:比较两个实例值是否相等
“==” 与 equals 的区别
== | xxx.equals(xxx) |
---|
可以在基本数据类型变量和引用数据类型变量中使用 | 只能在引用型数据类型变量中使用 | 基本数据类型比较数值是否相同 | 在Object类中的equals方法与==相同 | 引用数据类型比较地址值是否相同 | |
Object 中定义的equals()
public boolean equals(Object obj){
return(this == obj);
}
不难看出,根父类Object中的equals与的判断相同,所以当我们需要特定功能的比较的equals函数时,我们就应该在自定义类中重写该方法。 且类似于String、Date、File、包装类等都重写了equals方法
String 中重写的equals()
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (!COMPACT_STRINGS || this.coder == aString.coder) {
return StringLatin1.equals(value, aString.value);
}
}
return false;
}
Date 中重写的equals()
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
重写的equals()的步骤以String为例
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (!COMPACT_STRINGS || this.coder == aString.coder) {
return StringLatin1.equals(value, aString.value);
}
}
return false;
}
eclipse中重写的equals()的快捷键 菜单栏Source->Generate hashCode() and equals()
二、toString
当输出一个类对象时,实际上是调用当前对象的toString方法
Object 中定义的equals()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
类似于equals,当我们需要特定功能的比较的toString函数时,我们就应该在自定义类中重写该方法。 且类似于String、Date、File、包装类等都重写了toString方法
String中重写的toString方法
public String toString() {
return this;
}
在自定义类中重写的toString方法
public class Car {
private String carNo;
private String carName;
private String color;
private double price;
Car(String carNo,String carName,String color,double price){
this.carNo=carNo;
this.carName=carName;
this.color=color;
this.price=price;
}
public String getCarNo(){
return carNo;
}
public void setCarNo(String carNo){
this.carNo=carNo;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String toString(){
return "这个汽车名叫 "+carName+",型号是 "+carNo+",汽车颜色 "+color+",价格 "+price;
}
public static void main(String[] args){
Car myCar=new Car("苏A 4995","长安汽车","灰蓝色",70000.00);
System.out.println(myCar.toString());
}
}
eclipse中重写的toString()的快捷键 菜单栏Source->Generate toString()…
小技巧:要看根父类提供了哪些可以重写的基础函数时可以直接new一个跟父类的实例 ,再调用方法 ctrl+点击对应的方法名。
|