0


Java API - Object类的常用API

文章目录

Java常用API介绍

API概念

什么是API?

API(Application Programming interface) 应用程序编程接口。

简单来说:就是Java帮我们已经写好的一些方法我们直接拿过来用就可以了

Object类

Object类的作用:

  • Object类的方法是一切子类对象都可以直接使用的,所以我们要学习Object类的方法。
  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类

toString方法

方法名说明toString()默认是返回当前对象在堆内存中的地址信息: 类的全限名@内存地址
基本使用:

例如有一个Student类

publicclassTest{publicstaticvoidmain(String[] args){Student stu =newStudent();// 方式一: 将返回的地址在变量中接收String str = stu.toString();System.out.println(str);// 方式二: 输出时, 直接调用toString方法System.out.println(stu.toString());// 方式三: 直接输出对象变量, 默认可以省略toString方法System.out.println(stu);}}

问题引出:

在开发中直接输出对象变量,默认输出对象的地址其实是毫无意义的。

事实上, 开发中更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义:

父类toString()方法存在的意义是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

演示代码:

例如我们有如下一个Student类

packagecom.chenyq.d12_api_object;/**
    默认继承自Object
 */publicclassStudent{privateString name;privateint age;privatedouble height;publicStudent(){}publicStudent(String name,int age,double height){this.name = name;this.age = age;this.height = height;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicintgetAge(){return age;}publicvoidsetAge(int age){this.age = age;}publicdoublegetHeight(){return height;}publicvoidsetHeight(double height){this.height = height;}}

我们可以在该Student类中重写toString方法

packagecom.chenyq.d12_api_object;/**
    默认继承自Object
 */publicclassStudent{privateString name;privateint age;privatedouble height;publicStudent(){}publicStudent(String name,int age,double height){this.name = name;this.age = age;this.height = height;}// 重新toString方法@OverridepublicStringtoString(){return"Student{"+"name='"+ name +'\''+", age="+ age +", height="+ height +'}';}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicintgetAge(){return age;}publicvoidsetAge(int age){this.age = age;}publicdoublegetHeight(){return height;}publicvoidsetHeight(double height){this.height = height;}}

此时再调用Student对象变量的toString方法, 会调用我们自己重写的toString, 返回对象的内容

publicclassTest{publicstaticvoidmain(String[] args){Student stu =newStudent("chenyq",18,1.88);System.out.println(stu);// Student{name='chenyq, age=18, height=1.88}}}

小结:

Object的toString方法的作用是什么?

  • 让子类重写toString方法,以便返回子类对象中的内容。

equals方法

方法名说明equals(Object o)默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false
基本使用:

我们还是继续使用上面的Student类演示

publicclassTest2{publicstaticvoidmain(String[] args){Student stu1 =newStudent("chenyq",18,1.88);Student stu2 =newStudent("chenyq",18,1.88);// 这里equals调用的是Object中的System.out.println(stu1.equals(stu2));// false}}

问题思考:

直接比较两个对象的地址是否相同完全可以用 “==”, 那么为什么要使用equals呢?

equals存在的意义

在开发中, 其实我们并不会使用equals方法比较两个对象的地址, 通常是用来比较两个对象内容是否相同

而父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。

演示代码:

重写equals方法, 自己定制比较规则: 例如比较两个对象内容是否相同

packagecom.chenyq.d12_api_object;importjava.util.Objects;/**
    默认继承自Object
 */publicclassStudent{privateString name;privateint age;privatedouble height;publicStudent(){}publicStudent(String name,int age,double height){this.name = name;this.age = age;this.height = height;}/**
     重写equals方法
     s1 -> this
     s2 -> o
     */@Overridepublicbooleanequals(Object o){// 1. 判断this和o是否是同一个对象if(this== o)returntrue;// 2. 判断o是否为null以及this和o类型是否相同if(o ==null||getClass()!= o.getClass())returnfalse;// 3. 将o强转为Student类型Student student =(Student) o;// 4. 返回age, height, name的比较结果return age == student.age &&Double.compare(student.height, height)==0&&Objects.equals(name, student.name);publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicintgetAge(){return age;}publicvoidsetAge(int age){this.age = age;}publicdoublegetHeight(){return height;}publicvoidsetHeight(double height){this.height = height;}}

此时再调用Student对象的equals方法, 就是调用的自己重写的equals

publicclassTest2{publicstaticvoidmain(String[] args){Student stu1 =newStudent("chenyq",18,1.88);Student stu2 =newStudent("chenyq",18,1.88);// 这里equals调用的是自己重写的, 比较对象内容是否相同System.out.println(stu1.equals(stu2));// true}}
标签: java jvm 数据结构

本文转载自: https://blog.csdn.net/m0_71485750/article/details/127231680
版权归原作者 蓝桉cyq 所有, 如有侵权,请联系我们删除。

“Java API - Object类的常用API”的评论:

还没有评论