Object类toString()和equals()方法使用解析

网友投稿 258 2022-12-13


Object类toString()和equals()方法使用解析

我们知道,Object类是所有类的父类,因此也被称为根类、祖先。那么,我们就来看一看Object类的最常用的两个方法是如何用的。

1.toString方法:

Object类的toString()方法默认返回的是对象地址值,如果某个类的toString()方法返回的不是对象地址值,则说明这个类重写了toString()方法。

public class Test5 {

public static void main(String[] args) {

Person p1=new Person();

System.out.println(p1.tTXYySvPVQoString());

//没有重写toString()方法,返回的是对象的地址值 cn.itcast.Person@3feba861

}

}

接下来我们重写Person的toString()方法

public class Person {

private String name;

private int age;

//重写toString()方法

@Override

public String toString() {

return "姓名: "+name+" 年龄:"+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;

}

}

再来看看toString()方法返回的值:

public class Test5 {

public static void main(String[] args) {

Person p1=new Person();

System.out.println(p1.toString());

//重写了toString()方法,返回的是方法的返回值

Person p2=new Person("aaa",18);

System.out.println(p2.toString());

// 姓名: null 年龄:0

// 姓名: aaa 年龄:18

}

}

2.equals方法:

equals()方法的源码如下所示:

public boolean equali(Object obj){

return this==obj;

}

http://

因为 == 比较的是对象的地址值,所以Object类的equals()默认比较的是地址值,需要重写才有意义。具体如何重写,就看我们比较两个对象是否相同的依据是什么了。

举个例子:我们规定,如果两个人的姓名和年龄都一样,那么两个人相同。

//重写Person类的equals()方法

@Override

public boolean equals(Object obj) {

return this.name==((Person)obj).name&&this.age==((Person)obj).age;

}

再来测试一下equals()方法:

public class Test5 {

public static void main(String[] args) {

Person p3=new Person("aa",21);

Person p4=new Person("aa",23);

Person p5=new Person("bb",21);

Person p6=new Person("aa",21);

System.out.println(p3.equals(p4)); //false

System.out.println(p3.equals(p5)); //false

System.out.println(p3.equals(p6)); //true

}

}

equals()方法的注意事项:

(1)除了用a.equals(b)这个写法之外,也可以用Objects.equals(a,b),作用是一样的。

(2)equals方法空指针安全,即容忍空指针。即equals()方法中的参数可以有null,返回值永远为false。

(3)null不可以调用方法,所以若a为空,则不能调用a.equals()方法,否则会出现NullPointERException.正因为如此,我们一般将常量或已知非空的对象放在前面,即写成"aa".equals(str)而不是str.equals("aa").


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:用IntelliJ IDEA看Java类图的方法(图文)
下一篇:SpringBoot使用Mybatis
相关文章

 发表评论

暂时没有评论,来抢沙发吧~