Object类概述
是所有类中的父类,最大的超类,所有的类都继承他。
equals方法
比较2个对象是否相同,其实他是在比较两个对象的地址是否相同,在equals方法中我们用==来判断
但是比较2个地址相同实在没有什么意义,实际开发中我们可能会比较2个对象的属性是否一样,所以我们会在类中重写equals方法再调用
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
比较2个人的年龄是否相同:
1 package com.orcale.demo01; 2 3 public class Person { 4 private String name; //首先定义人的属性年龄和名字 5 private int age; 6 public String getName() { 7 return name; 8 } 9 public void setName(String name) { 10 this.name = name; 11 } 12 public int getAge() { 13 return age; 14 } 15 public void setAge(int age) { 16 this.age = age; 17 } 18 //判断是否是同龄人 19 public boolean equals(Object obj) { //重写equals方法,形参传object类,父类的类型多态的 obj是传进来的一个地址,p2的地址。 20 if(obj==this){ 判断一下传进来的地址是不是一样,如果是传一个p1,那就是p1==p1,不用再判断了就是ture 21 return true; 22 } 23 if(obj instanceof Person){ //先判断一下是不是传进来的obj是不是Person类,如果不是直接返回false,如果是就进方法体。 24 //向下转型 //因为是父类,但是我们要判断Person年龄属性,我们要把父类转换到子类,强转子类,然后判断 25 Person p =(Person)obj; 26 return this.age == p.age; 27 } 28 return false; 29 }33 } 34 }
1 Person p1 =new Person(); 2 p1.setAge(28); 3 Person p2 =new Person(); 4 p2.setAge(30); 5 //调用equals()方法, 6 //如果Person没有重写object子类,那就是调用objeck中的方法 7 //比较的是两个对象的内存地址,没有意思。Person类如果要比较年龄是否相同 8 //就要重写父类的equals方法 9 boolean b = p1.equals(p2); //调用equals方法赋值给b 10 System.out.println(b);
判断一下汽车的颜色是否一样
1 package com.orcale.demo01; 2 3 public class car { 4 private String color; 5 private int lunzi; 6 public String getColor() { 7 return color; 8 } 9 public void setColor(String color) { 10 this.color = color; 11 } 12 public int getLunzi() { 13 return lunzi; 14 } 15 public void setLunzi(int lunzi) { 16 this.lunzi = lunzi; 17 } 18 public boolean equals(Object a){ 19 if(this==a){ 20 return true; 21 } 22 if(a instanceof car){ 23 car c =(car)a; 24 return this.color==c.color; 25 } 26 return false; 27 28 } 29 }
car c1 =new car(); c1.setColor("红色"); car c2 =new car(); c2.setColor("绿色"); boolean b =c1.equals(c2); System.out.println(b);
toString方法
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
package com.orcale.demo01; public class dog { private String name; private String color; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String toString(){ 重写toString方法,返回名字+颜色 return name+" "+color; } }
1 dog d1 = new dog(); 2 d1.setColor("白色"); 3 dog d2 =new dog(); 4 d2.setColor("黑色"); 5 String d =d1.toString(); 6 System.out.println(d1); 7 System.out.println(d2);