java中Object和Objects类toString方法和equals方法介绍
Posted 苦海123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中Object和Objects类toString方法和equals方法介绍相关的知识,希望对你有一定的参考价值。
Object类:
Object类位于java.lang包中,lang包下的类无需导包就可以使用,object是Java语言中的根类,即所有类的父类。Object中描述的所有方法其子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有指定父类, 那么默认则继承Object类。
Object类中包含多个方法,这里先介绍几个常用方法:toString、equals,如:
//1. java.lang.Object类是类层次的根类(最顶层的类),所有类默认都继承了此类:下面将使用Object类中的toString方法进行测试(不手动继承Object类的情况下),
// toString方法讲一个对象转换为字符串
public class ObjecttoString
public static void main(String[] args)
// 3.创建一个学生类的对象:
StudentClass studentone = new StudentClass("韩梅梅",18);
// 4.studentone对象调用toString方法:
String str = studentone.toString();
System.out.println(studentone);//StudentClass@2a3046da
System.out.println(str);//StudentClass@2a3046da,可以看到这里打印的结果和直接打印对象的结果一样,打印应用型数据时其结果是引用数据类型的地址值,如果想要得到更精确的结果,可以覆盖重写toString方法使其答应对象的属性(StudentClass中覆盖重写)
// 当覆盖重写toString方法后返回的结果为两次:名字:韩梅梅,年龄:18,
// 6.equals方法用于比较两个对象的地址值是否相等,返回布尔值;equals方法默认比较的是两个对象的地址值是否相等是没有什么意义的,既是两个对象的属性值相等,也是返回false,一般需要重写此方法,来实现比较属性值相等就返回true。
StudentClass studenttwo = new StudentClass("李雷",19);
StudentClass studentthree = new StudentClass("韩梅梅",18);
boolean result1 = studentone.equals(studenttwo);
boolean result2 = studentone.equals(studentthree);
boolean result3 = studenttwo.equals(studentthree);
System.out.println(result1);//false
System.out.println(result2);//false,equals方法默认比较地址值是否相等,因此这里既是值相等,也返回false,如果想要比较对象值是否相等,那么就要重写equals方法,覆盖重写后的结果为true;
System.out.println(result3);//false
System.out.println("str1".equals("str1"));//true
;
/* 2.定义一个标准的学生类:任何类默认都继承了Object类,实际是:public class StudentClass extends Object,
既是没有手动的写继承,但是默认是继承了Object类的,因此Object类中的任何方法都可以在当前类使用: */
public class StudentClass
// 定义成员变量:
private String name;
private int age;
// 定义无参构造:
public StudentClass();
// 定义全参构造:
public StudentClass(String names,int ages)
this.name = names;
this.age = ages;
;
// name的get-和set-方法:
public String getName()
return name;
;
public void setName(String names)
this.name = names;
;
// age的get-和set-方法:
public int getAge()
return age;
;
public void setAge(int ages)
this.age = ages;
;
// 5.覆盖重写Object类中的toString方法使其返回成员变量的值:(实际开发中可以使用idea开发工具中的快捷键进行覆盖重写,没必要自己动手,ArrayList类和Scanner类中默认重写了此方法)
@Override
public String toString()
// return name;只返回name属性值
// return age;只返回age属性值
return "名字:"+name+",年龄:"+age;
// 7.覆盖重写equals方法使其比较两个对象的属性:equals方法中传入的是一个对象,这里隐含一个多态的问题,父类无法使用子类特有的内容(属性或方法);
// Object obj = studentone = new StudentClass("韩梅梅",18);obj表示的是equals接收的对象,可以看到最左边和最右边构成多态的结构:父类指向子类,父类无法访问子类的属性或方法,如果真要访问那就要向下转型(把obj的类型转换为StudentClass类型)
@Override//实际开发中也无需手动重写此方法,可借助idea开发工具中快捷键Alt+inset自动生成。
public boolean equals(Object obj)
if (obj == null) return false;//如果传入的一个空值,那么直接返回false,无需进行下面代码,可以提高程序效率。
if (obj == this) return true;//如果传入的是本身,那么直接返回true,无需执行下面代码,可以提高程序效率。
// 向下转型将obj为Object类型转换为StudentClass类型,使其可以比较属性或方法:
if(obj instanceof StudentClass)//添加此判断是防止传入非StudentClass类型的数据导致转型异常报错
StudentClass student = (StudentClass)obj;
// 进行比较属性值并将布尔值赋值给变量res:
boolean res = this.name.equals(student.name) && this.age == student.age;//this代表当前对象,student表示传入的对象(equals接收的对象),覆盖重写此方法时,应将所有属性都进行比较,结合逻辑与得到比较结果。
// 返回比较的值:
return res;
;
return false;//以上两种情况除外,当传入其他类型时,也直接返回false;
;
Objects类:
Objects是一个工具类,它提供了一些方法来操作对象,它由一些静态的方法组成,并且这些方法允许空指针的出现,用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象等,如:
// 1.使用时导入Objects类:
import java.util.Objects;
public class ObjectsEquals
public static void main(String[] args)
String str1 = null;
String str2 = "kuhai";
boolean result = Objects.equals(str1,str2);//允许传入空指针值,如果是Object使用null会报错。
System.out.println(result);//false
/*其源码:
public static boolean equals(Object a, Object b)
return (a == b) || (a != null && a.equals(b));
*/
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海
以上是关于java中Object和Objects类toString方法和equals方法介绍的主要内容,如果未能解决你的问题,请参考以下文章