Java Object類中的常用API介紹
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);
}
}問題引出:
在開發(fā)中直接輸出對象變量,默認輸出對象的地址其實是毫無意義的。
事實上, 開發(fā)中更多的時候是希望看到對象的內容數據而不是對象的地址信息。
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方法
@Override
public 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 |
基本使用:
我們還是繼續(xù)使用上面的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存在的意義
在開發(fā)中, 其實我們并不會使用equals方法比較兩個對象的地址, 通常是用來比較兩個對象內容是否相同
而父類equals方法存在的意義就是為了被子類重寫,以便子類自己來定制比較規(guī)則。
演示代碼:
重寫equals方法, 自己定制比較規(guī)則: 例如比較兩個對象內容是否相同
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 -> this
s2 -> o
*/
@Override
public 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
}
}到此這篇關于Java Object類中的常用API的文章就介紹到這了,更多相關Java Object類常用API內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實踐
這篇文章主要給大家介紹了關于利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實踐,Mybatis-Plus可以很方便地處理JSON字段,在實體類中可以使用@JSONField注解來標記JSON字段,需要的朋友可以參考下2024-07-07
SpringBoot調用WebService接口方法示例代碼
這篇文章主要介紹了使用SpringWebServices調用SOAP?WebService接口的步驟,包括導入依賴、創(chuàng)建請求類和響應類、生成ObjectFactory類、配置WebServiceTemplate、調用WebService接口以及測試代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-02-02

