时间:2021-05-20
我们知道,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.toString()); //没有重写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;}因为 == 比较的是对象的地址值,所以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").
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PS:本文使用jdk1.7解析1.Object类的equals方法复制代码代码如下:/***Indicateswhethersomeotherobjectis"
Q1:Object类型包含哪些方法?A1:Object类型共包含6个方法,Equals,GetHashCode,ToString,GetType,Memberw
项目中经常使用bean,entity等类,绝大部分数据类类中都需要get、set、toString、equals和hashCode方法,虽然eclipse和id
equals方法是java.lang.Object类的方法。有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较
简单介绍equals方法是java.lang.Object类的方法有两种用法说明:一、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其