Java Object类里基本方法的用法及重写
Object类在java.lang.Object包里
两个基本方法:
(1)public String toString() 返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。
(2)public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
toString代码如下
public class Person {
private String name;
private int age;
public Person ( ) {
}
public Person ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
首先建立一个Person类,写出其get、set 方法,并建立一个无参构造及全参构造。
public class Demo01ToString {
public static void main ( String[ ] args) {
Person p= new Person ( "zhangsan" , 18 ) ;
String s= p. toString ( ) ;
System. out. println ( s) ;
System. out. println ( p) ;
Random r= new Random ( ) ;
System. out. println ( r) ;
Scanner sc= new Scanner ( System. in) ;
ArrayList< Integer> list = new ArrayList < > ( ) ;
list. add ( 1 ) ;
list. add ( 2 ) ;
}
}
如果没有重写,输出结果如下所示。
分别代表所在包名及类名,以及其下地址名。
由于直接打印对象的地址没有意义,因此需要重写object类的toString()方法打印对象的属性(name,age)。
重写代码如下有两种形式:
@Override
public String toString ( ) {
return "person(name" + name+ "age" + age+ ")" ;
}
@Override
public String toString ( ) {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}' ;
}
同样的对于object类里的equals()方法,这个方法的底层是通过==去比较的是引用数据类型的地址是否相等,Object 类的equals方法默认比较的是两个对象的地址,没有意义,所以我们需要重写equals方法,比较两个对象的属性值(name,age)
问题:因为equals方法隐含一个多态
Object obj=p2=new Person(“aaa”,12)多态弊端:无法使用子类特有的内容(属性:方法)解决:可以使用向下转型(强转)把Object转换为Person。
所以可以重写为如下两种形式:
@Override
public boolean equals ( Object obj) {
if ( obj== null)
{
return false ;
}
if ( obj== this )
{
return true ;
}
if ( obj instanceof Person ) {
Person p= ( Person) obj;
boolean b= this . name. equals ( p. name) && this . age== p. age;
return b;
}
return false ;
}
@Override
public boolean equals ( Object o) {
if ( this == o) return true ;
if ( o == null || getClass ( ) != o. getClass ( ) ) return false ;
Person person = ( Person) o;
return age == person. age &&
Objects. equals ( name, person. name) ;
}