日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Object类Objects类总结

發布時間:2024/4/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Object类Objects类总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 概述

java.lang.Object類是Java語言中的根類,即所有類的父類。它中描述的所有方法子類都可以使用。在對象實例化的時候,最終找的父類就是Object。

如果一個類沒有特別指定父類, 那么默認則繼承自Object類。例如:

public class MyClass /*extends Object*/ {// ... }

根據JDK源代碼及Object類的API文檔,Object類當中包含的方法有11個。今天我們主要學習其中的2個:

  • public String toString():返回該對象的字符串表示。

  • public boolean equals(Object obj):指示其他某個對象是否與此對象“相等”

1.2 toString方法

方法摘要

  • public String toString():返回該對象的字符串表示。

toString方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。

由于toString方法返回的結果是內存地址,而在開發中,經常需要按照對象的屬性得到相應的字符串表現形式,因此也需要重寫它。

覆蓋重寫

如果不希望使用toString方法的默認行為,則可以對它進行覆蓋重寫。例如自定義的Person類:

public class Person { private String name;private int age;@Overridepublic String toString() {return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';}// 省略構造器與Getter Setter }

在IntelliJ IDEA中,可以點擊Code菜單中的Generate...,也可以使用快捷鍵alt+insert,點擊toString()選項。選擇需要包含的成員變量并確定。如下圖所示:

小貼士: 在我們直接使用輸出語句輸出對象名的時候,其實通過該對象調用了其toString()方法。

1.3 equals方法

方法摘要

  • public boolean equals(Object obj):指示其他某個對象是否與此對象“相等”。

調用成員方法equals并指定參數為另一個對象,則可以判斷這兩個對象是否是相同的。這里的“相同”有默認和自定義兩種方式。

默認地址比較

如果沒有覆蓋重寫equals方法,那么Object類中默認進行==運算符的對象地址比較,只要不是同一個對象,結果必然為false。

對象內容比較

如果希望進行對象的內容比較,即所有或指定的部分成員變量相同就判定兩個對象相同,則可以覆蓋重寫equals方法。例如:

import java.util.Objects;public class Person { private String name;private int age;@Overridepublic boolean equals(Object o) {// 如果對象地址一樣,則認為相同if (this == o)return true;// 如果參數為空,或者類型信息不一樣,則認為不同if (o == null || getClass() != o.getClass())return false;// 轉換為當前類型Person person = (Person) o;// 要求基本類型相等,并且將引用類型交給java.util.Objects類的equals靜態方法取用結果return age == person.age && Objects.equals(name, person.name);} }

這段代碼充分考慮了對象為空、類型一致等問題,但方法內容并不唯一。大多數IDE都可以自動生成equals方法的代碼內容。在IntelliJ IDEA中,可以使用Code菜單中的Generate…選項,也可以使用快捷鍵alt+insert,并選擇equals() and hashCode()進行自動代碼生成。

1.4 Objects類

在剛才IDEA自動重寫equals代碼中,使用到了java.util.Objects類,那么這個類是什么呢?

JDK7添加了一個Objects工具類,它提供了一些方法來操作對象,它由一些靜態的實用方法組成,這些方法是null-save(空指針安全的)或null-tolerant(容忍空指針的),用于計算對象的hashcode、返回對象的字符串表示形式、比較兩個對象。

在比較兩個對象的時候,Object的equals方法容易拋出空指針異常,而Objects類中的equals方法就優化了這個問題。方法如下:

  • public static boolean equals(Object a, Object b):判斷兩個對象是否相等。

我們可以查看一下源碼,學習一下:

public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }

?

?

總結

以上是生活随笔為你收集整理的Object类Objects类总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。