Object类
程序员文章站
2022-06-04 13:37:37
...
Object类
Object是Java的顶层父类,所有的子类都可以使用Object的方法。下面学习几个常用方法
常用方法
String toString()
把一个对象转换为字符串形式,默认为地址值的十六进制形式: “类名@地址值”
对开发者而言更重要对象内部封装的数据
一般子类复写toString方法把对象转换为属性值
boolean equals(Object obj)
equals用于判断两个对象是否相等,本质上比较对象的地址值。
对开发者而言更重要的是对象内部封装的数据,而不是地址值。
一般子类复写equals方法比较对象的属性值,更符合实际需求
int hashCode()
返回对象的哈希值
代码演示
创建一个Car类,复写toString方法和equals方法。
public class Car{
private String brand;
private String color;
public Car(){
}
public Car(String brand,String color){
this.brand=brand;
this.color=color;
}
//get和set自己添加,此次节省空间,省略了
@Override
public String toString(){
return "Person{brand="+brand+",color="+color+"}";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Car car = (Car) o;
return Objects.equals(brand, car.brand) &&
Objects.equals(color, car.color);
}
}
public class Demo1 {
public static void main(String[] args) {
Car c1=new Car("吉利","红色");
System.out.println(c1); //Car{brand='吉利', color='红色'}
Car c2=new Car("吉利","红色");
System.out.println(c2); //Car{brand='吉利', color='红色'}
System.out.println(c1==c2); //false ,比较两个对象的地址值
System.out.println(c1.equals(c2)); //true,比较的是对象的属性值
}
}
Objects工具类
Objects工具类可以用来比较任意两个对象是否相等,而不担心对象为null比较的时候出现空NullPointerException异常
public class Demo3 {
public static void main(String[] args) {
Car c1=null;
Car c2=new Car("比亚迪","红色");
/* if(c1!=null&&c1.equals(c2)){
System.out.println("两个对象的属性值相同");
}else{
System.out.println("两个对象的属性值不相同");
}
*/
//简化上面的代码,允许对象为null
boolean f = Objects.equals(c1, c2);
System.out.println(f);
}
}
上一篇: 怎样治疗早泄? 艾灸三穴位温肾
下一篇: 微信小程序,左上角返回首页小房子