您好,歡迎來(lái)到賦能網(wǎng)!

面向?qū)ο蟾呒?jí)特性O(shè)bject類

賦能網(wǎng) 2023-06-11 244

Object類的特點(diǎn)

Object類是所有類的根父類, 也就是說(shuō)如果一個(gè)類沒(méi)有顯式聲明父類, 那么這個(gè)類的父類就是Object類, 所以, Object類中的屬性和方法會(huì)被所有類繼承, 都可以直接調(diào)用.

類中的典型方法

1. toString()

public String toString() 這個(gè)方法返回當(dāng)前對(duì)象的一個(gè)字符串表示, 通常用于描述這個(gè)對(duì)象的內(nèi)容.

面向?qū)ο蟾呒?jí)特性O(shè)bject類

這個(gè)方法也會(huì)在對(duì)象被打印和與字符串拼接時(shí)自動(dòng)調(diào)用, 結(jié)果還是一個(gè)字符串.

2. equals()

表示兩個(gè)對(duì)象內(nèi)容是否相等, 通常情況下, 兩個(gè)不同的對(duì)象是不相等的, 但是我們可以通過(guò)覆蓋這個(gè)方法,實(shí)現(xiàn)兩個(gè)內(nèi)容相等, 但不同的對(duì)象之間具有等同性比較能力.

3. hashCode()

當(dāng)兩個(gè)對(duì)象的內(nèi)容相等時(shí), equals方法的結(jié)果就應(yīng)該返回true, 但同時(shí)這兩個(gè)對(duì)象調(diào)用hashCode方法返回的哈希碼值也必須要相等, 相同的道理, 兩個(gè)hashCode碼值不同的對(duì)象, equals方法一定返回false.

public class Point {

private int x;

private int y;

public Point() {}

public Point(int x, int y) {

this.x = x;

this.y = y;

}

public void setX(int x) {

this.x = x;

面向?qū)ο蟾呒?jí)特性O(shè)bject類

}

public int getX() {

return x;

}

public void setY(int y) {

this.y = y;

}

public int getY() {

return y;

}

public String say() {

return "X:" + x + ",Y:" + y;

}

@Override // 可以完成真實(shí)的比較

public boolean equals(Object obj) {

if (obj instanceof Point && this.x == ((Point)obj).x && this.y == ((Point)obj).y) {

return true;

}

return false;

}

@Override

public int hashCode() {

return Integer.parseInt(x * 10 + "" + y * 10);

}

// 返回對(duì)象的字符串表示, 通常在打印對(duì)象時(shí)調(diào)用

@Override

public String toString() {

return "x:" + x + ",y:" + y;

}

}

public class PointTest {

public static void main(String[] args) {

Point p1 = new Point(10, 20);

Point p2 = new Point(10, 20);

System.out.println(p1 == p2); // 打印false, 因?yàn)楸容^兩個(gè)對(duì)象的地址

boolean b = p1.equals(p2); // 返回true, 因?yàn)楸容^兩個(gè)對(duì)象的內(nèi)容

System.out.println(b);

System.out.println(p1.hashCode()); // 兩個(gè)對(duì)象的哈希碼也都一樣

System.out.println(p2.hashCode());

System.out.println(p1); // 打印對(duì)象時(shí), 打印的其實(shí)是對(duì)象的toString()方法的結(jié)果

}

}

Object的使用

Object類型通常用于表示任意對(duì)象的引用類型, 使用Object類型可以兼容任意對(duì)象, 很靈活方便, 也因?yàn)镺bject類是根父類, 所以其中的方法具有普遍性, 便于統(tǒng)一處理.

Object的注意點(diǎn)

因?yàn)镺bject類型是父類類型, 所以O(shè)bject類型的對(duì)象究竟是什么類型的對(duì)象就變得非常復(fù)雜, 所以想要處理不同的子類對(duì)象, 比較麻煩, 需要配合instanceof操作符和類型轉(zhuǎn)換。

想要了解跟多關(guān)于java培訓(xùn)課程內(nèi)容歡迎關(guān)注達(dá)內(nèi)java培訓(xùn),達(dá)內(nèi)除了這些技術(shù)文章外還有免費(fèi)的高質(zhì)量大java培訓(xùn)課程視頻供廣大學(xué)員下載學(xué)習(xí)。

本文鏈接:

本文章“面向?qū)ο蟾呒?jí)特性O(shè)bject類”已幫助 244 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: