Java APIObject类的常用API文档
admin
2024-02-23 11:14:38
0

文章目录

文章目录

      • 文章目录
    • Java常用[API](https://so.csdn.net/so/search?q=API&spm=1001.2101.3001.7020)介绍
      • API概念
      • Object类
        • toString方法
        • equals方法

Java常用API介绍

API概念

什么是API?

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

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

Object类

Object类的作用:

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

toString方法

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

基本使用:

例如有一个Student类

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

问题引出:

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

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

toString存在的意义:

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

演示代码:

例如我们有如下一个Student类

package com.chenyq.d12_api_object;/**默认继承自Object*/
public class Student {private String name;private int age;private double height;public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}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;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}
}

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

package com.chenyq.d12_api_object;/**默认继承自Object*/
public class Student {private String name;private int age;private double height;public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}// 重新toString方法@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}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;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}
}

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

public class Test {public static void main(String[] args) {Student stu = new Student("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类演示

public class Test2 {public static void main(String[] args) {Student stu1 = new Student("chenyq", 18, 1.88);Student stu2 = new Student("chenyq", 18, 1.88);// 这里equals调用的是Object中的System.out.println(stu1.equals(stu2)); // false}
}

问题思考:

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

equals存在的意义

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

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

演示代码:

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

package com.chenyq.d12_api_object;import java.util.Objects;/**默认继承自Object*/
public class Student {private String name;private int age;private double height;public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}/**重写equals方法s1 -> thiss2 -> o*/@Overridepublic boolean equals(Object o) {// 1. 判断this和o是否是同一个对象if (this == o) return true;// 2. 判断o是否为null以及this和o类型是否相同if (o == null || getClass() != o.getClass()) return false;// 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);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;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}
}

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

public class Test2 {public static void main(String[] args) {Student stu1 = new Student("chenyq", 18, 1.88);Student stu2 = new Student("chenyq", 18, 1.88);// 这里equals调用的是自己重写的, 比较对象内容是否相同System.out.println(stu1.equals(stu2)); // true}
}

相关内容

热门资讯

以花字开头的成语 以花字开头的成语 以花字开头的成语 :花里胡哨、花花绿绿、花花公子、花言巧语、花容月貌、花红柳绿...
魔兽世界邪恶骷髅战马 魔兽世界邪恶骷髅战马需要打评级战场,打75场竞技场 胜利200场 评级胜利40场!成就坐骑!
没有房子只能分手吗? 没有房子只能分手吗?如果女的真爱你,就不会考虑房子不房子问题了。她也不体谅你。如果真爱,两人一起努力...
魔兽世界 萨隆邪铁箭矢在哪啊? 魔兽世界 萨隆邪铁箭矢在哪啊?死亡骑士的新手任务真的是地上捡的。。。地上捡。。。锻造做的吧 还是工程...
我爱宝贝 我爱宝贝宝贝我爱你英文怎么翻译 oh,my baby,i love you My dear baby...
呼市土中和敬业高中相比哪个更好... 呼市土中和敬业高中相比哪个更好些?升学率、日常管理、师风学风等。如题敬业比较知名
算对这笔长远账(记录中国) 算... 本报记者 朱  磊  周  欢滕王阁景区游人如织。 彭 寰摄(影像中国)游客在滕王阁景区内打卡留影。...
西安旅游跟团游5天攻略,旅游团... 家人们,西安这座城市,那可是咱中国历史文化的瑰宝之地。它就像一座巨大的历史博物馆,每一寸土地都沉淀着...
我在他乡挺好根据什么小说改编的... 我在他乡挺好根据什么小说改编的?《我在他乡挺好的》是原创的电视剧,并不是根据小说改编的《我在他乡挺好...
我想要什么的作文 我想要什么的作文                                          ...
请问“啊莱噢莱噢莱。。。”这是... 请问“啊莱噢莱噢莱。。。”这是一首歌吗叫《我们是冠军》不对吧,应该是意大利AC米兰队的队歌.
同安第二实验小学王彪 张正霖的... 同安第二实验小学王彪 张正霖的漫画我张霖没 原稿早丢
浪子回头的例子,古今中外皆可 浪子回头的例子,古今中外皆可除了周处的那个,我已经知道了。 多多益善,谢谢大家!乐羊子受妻子劝诫浪子...
不败和主不败的区别 不败和主不败的区别不败和主不败的区别就是,不败的意思就是没有输过,此人一生对战老余无数,未尝一败,可...
足球不败怎么下 足球不败怎么下足球比赛不败的意思就是在比赛当中胜利或者平局。根据查拍吵询相关公开信息显示,主场不败就...
甄姬皮肤哪个手感好 甄姬皮肤哪个手感好甄姬皮肤哪个手感好,如下:1、冰雪圆舞曲:这款皮肤定价为888点券,但它只是勇者皮...
《知否》中墨兰是什么结局?和小... 《知否》中墨兰是什么结局?和小说中有什么不同吗?在电视剧当中,墨兰还有盛明兰两个人是和好了,并且成为...
求小说!! 求小说!!笑傲江湖好看
古代的‘天启’是什么意思? 古代的‘天启’是什么意思?即上天的启示。
中班语言喇叭花电话怎么引题比较... 中班语言喇叭花电话怎么引题比较好   举烂纤活动目标:  1、学习用搓、剪、贴的方式来表现自己眼...