Object 類中的公共方法詳解

Object 類中的公共方法詳解

  • 1、clone() 方法
  • 2、equals(Object obj) 方法
  • 3、hashCode() 方法
  • 4、getClass() 方法
  • 5、wait() 方法
  • 6、notify() 和 notifyAll() 方法


💖The Begin💖點點關注,收藏不迷路💖

在 Java 中,Object 類是所有類的超類(或稱為父類)。它包含了一些重要的公共方法,這些方法為所有 Java 對象提供了基礎的行為。下面我們將詳細探討這些公共方法。

1、clone() 方法

clone() 方法是 Object 類中的一個保護方法用于創建并返回此對象的一個拷貝。 這個拷貝是一個 淺拷貝,意味著如果對象中的字段是引用類型,那么拷貝的只是引用地址,而不是引用的對象本身。

注意:只有實現了 Cloneable 接口的類才可以調用 clone() 方法,否則會拋出 CloneNotSupportedException 異常。

public class MyClass implements Cloneable {  @Override  protected Object clone() throws CloneNotSupportedException {  return super.clone();  }  
}  MyClass original = new MyClass();  
MyClass cloned = (MyClass) original.clone();

2、equals(Object obj) 方法

equals() 方法在 Object 類中用于比較兩個對象是否相等。 在 Object 類中,equals() 方法的默認實現是比較兩個對象的引用是否相等,這與 == 操作符的行為是一致的。

但是,在實際開發中,我們經常需要比較對象的內容是否相等,因此子類通常會重寫 equals() 方法。

@Override  
public boolean equals(Object obj) {  if (this == obj) return true;  if (obj == null || getClass() != obj.getClass()) return false;  MyClass other = (MyClass) obj;  // 比較對象的字段是否相等  return /* 比較字段的邏輯 */;  
}

3、hashCode() 方法

hashCode() 方法返回該對象的哈希碼值。 哈希碼在哈希表中非常重要,因為哈希表通過哈希碼來快速定位對象在表中的位置。當重寫 equals() 方法時,通常也需要重寫 hashCode() 方法,以確保相等的對象具有相同的哈希碼。

@Override  
public int hashCode() {  // 生成哈希碼的邏輯  return /* 哈希碼值 */;  
}

4、getClass() 方法

getClass() 方法是一個 final 方法,用于返回表示此 Object 運行類(由哪個類創建的實例)的 Class 對象。

Class<?> clazz = obj.getClass();

5、wait() 方法

wait() 方法使當前線程等待該對象的鎖,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或者等待的時間超過了指定的時間。當前線程必須是該對象的擁有者,也就是具有該對象的鎖。

synchronized (obj) {  while (/* 等待條件 */) {  obj.wait(); // 等待,直到其他線程調用 notify 或 notifyAll  }  // 處理等待后的邏輯  
}

6、notify() 和 notifyAll() 方法

notify() 方法喚醒在此對象監視器上等待的單個線程(如果有的話)。

notifyAll() 方法喚醒在此對象監視器上等待的所有線程。這兩個方法也必須在同步塊或同步方法中調用。

synchronized (obj) {  // 改變等待條件  obj.notify(); // 喚醒一個等待的線程  // 或  obj.notifyAll(); // 喚醒所有等待的線程  
}

在這里插入圖片描述


💖The End💖點點關注,收藏不迷路💖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40368.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI 驅動的數據中心變革與前景

文章主要探討了AI計算時代數據中心的轉型&#xff0c;涉及計算技術的多樣性、規格尺寸和加速器的發展、大型語言模型&#xff08;LLM&#xff09;的發展、功耗和冷卻趨勢、基準測試的重要性以及數據中心的發展等方面。為大家提供深入了解AI基礎設施發展的視角。 計算技術的多樣…

Ubuntu(通用)—網絡加固—ufw+防DNS污染+ARP綁定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 啟動開機自啟 # sudo ufw reload 更改后的操作2. 防ARP欺騙 華為云教程 arp -d刪除dns記錄arp -a顯示arp表 ipconfi…

PTrade常見問題系列3

量化允許同時運行回測和交易的策略個數配置。 量化允許同時運行回測和交易的策略個數在哪里查看&#xff1f; 在量化服務器/home/fly/config/custom_config_conf文件中&#xff0c;其中運行回測的策略個數由backtest_switch&#xff08;是否限制普通回測個數&#xff09;及ba…

Qt 日志輸出的選擇方案有多少

Qt 日志輸出的選擇方案主要包括以下幾種&#xff1a; 使用內置的日志函數&#xff1a; qDebug()&#xff1a;用于輸出調試信息。qInfo()&#xff1a;用于輸出一般信息。qWarning()&#xff1a;用于輸出警告信息。qCritical()&#xff1a;用于輸出關鍵錯誤信息&#xff0c;表明…

詳細設計與概要設計區別-慧哥充電樁開源系統

概要設計更側重于系統的整體構架和模塊劃分&#xff0c;而詳細設計則關注具體模塊的實現細節。在軟件開發過程中&#xff0c;這兩個階段雖然緊密相關&#xff0c;但它們各自有著不同的目標和方法。以下是具體分析&#xff1a; 目標 概要設計&#xff1a;概要設計關注系統整體架…

matlab 繪制高等數學中的二維函數示例

matlab 繪制高等數學中的二維函數示例 繪制高等數學中的二維函數示例繪制結果 繪制高等數學中的二維函數示例 clc,clear,close all; % 定義方程 eqn (x, y) (x.^2 y.^2).^3 - y.^4;% 繪制方程曲線和坐標軸 ezplot(eqn, [-2, 2, -2, 2]) hold on % 在同一圖形中保持繪圖% 繪…

S7-1200PLC學習記錄

文章目錄 前言一、S7-12001.數字量輸入模塊2. PNP接法和NPN接法 二、博圖軟件1. 位邏輯運算Part1. 添加新設備&#xff08;添加PLC&#xff09;Part2. 添加信號模塊Part3. 添加信號板中模塊Part4. 添加新塊Part5. Main編程文件案例1案例2 -( S )- 和 -( R )-完整操作過程&#…

昇思25天學習打卡營第8天|ResNet50遷移學習

一、遷移學習定義 遷移學習&#xff08;Transfer Learning&#xff09;&#xff1a;在一個任務上訓練得到的模型包含的知識可以部分或全部地轉移到另一個任務上。允許模型將從一個任務中學到的知識應用到另一個相關的任務中。適用于數據稀缺的情況&#xff0c;可減少對大量標記…

掌握Linux網絡:深入理解TC —— 你的流量控制利器

目錄 簡單概述&#xff1a; qdisc(隊列)&#xff1a; 舉例&#xff1a; Bash 整形隊列算法&#xff1a; FIFO (First-In-First-Out) PFIFO (Priority FIFO) SFQ (Stochastic Fair Queuing) RED (Random Early Detection) HTB (Hierarchical Token Bucket) TBF…

谷粒商城筆記-04-項目微服務架構圖簡介

文章目錄 一&#xff0c;網絡二&#xff0c;網關1&#xff0c;網關選型2&#xff0c;認證鑒權3&#xff0c;動態路由4&#xff0c;限流5&#xff0c;負載均衡6&#xff0c;熔斷降級 三&#xff0c;微服務四&#xff0c;存儲層五&#xff0c;服務治理六&#xff0c;日志系統七&a…

前端面試題3-淺談http協議及常見的面試題

1、淺談http協議 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;超文本傳輸協議&#xff0c;是互聯網上應用最為廣泛的一種網絡協議&#xff0c;所有的WWW文件都必須遵守這個標準。它是基于TCP/IP通信協議來傳遞數據&#xff08;HTML文件、圖片文件、查詢結果等&am…

在Apache HTTP服務器上配置 TLS加密

安裝mod_ssl軟件包 [rootlocalhost conf.d]# dnf install mod_ssl -y此時查看監聽端口多了一個443端口 自己構造證書 [rootlocalhost conf.d]# cd /etc/pki/tls/certs/ [rootlocalhost certs]# openssl genrsa > jiami.key [rootlocalhost certs]# openssl req -utf8 -n…

OLED示波器的實現

OLED示波器是一種使用有機發光二極管&#xff08;OLED&#xff09;顯示屏來顯示波形的儀器。它可以實時顯示電壓、電流、頻率等信號的波形。 OLED顯示屏具有高對比度、高亮度、廣視角和快速響應時間等優點&#xff0c;使得OLED示波器在波形顯示方面具有更好的表現。與傳統的液…

鴻蒙開發設備管理:【@ohos.usb (USB管理)】

USB管理 本模塊主要提供管理USB設備的相關功能&#xff0c;包括查詢USB設備列表、批量數據傳輸、控制命令傳輸、權限控制等。 說明&#xff1a; 本模塊首批接口從API version 8開始支持。后續版本的新增接口&#xff0c;采用上角標單獨標記接口的起始版本。 導入模塊 import …

【JavaScript腳本宇宙】優化你的Web色彩:精選JavaScript顏色工具對比

萬能色彩助手&#xff1a;詳解最受歡迎的JavaScript顏色庫 前言 在現代Web開發中&#xff0c;顏色處理和轉換是一個不可忽視的環節。無論是網站設計、數據可視化還是用戶界面開發&#xff0c;都離不開對顏色的精確控制和轉換。為了滿足這一需求&#xff0c;眾多JavaScript庫應…

Toocaa Studio已開發的功能

2024年07月01日 Toocaa Studio 一個激光切割雕刻機的上位機&#xff0c; 未來會對標Xtool的xTool Creative Space和LightBurn&#xff0c;同時它也是一款圖形編輯器&#xff0c;矢量圖形編輯器。 工具類 鼠標畫矩形或正方形 鼠標畫橢圓或畫圓 鼠標畫直線或軌跡路徑 往畫布中…

你的機器人購物新體驗——安全、高效、無憂

如果你跟我一樣&#xff0c;對找到那些“恰到好處”的商品充滿渴望&#xff0c;那么&#xff0c;讓我來告訴你為什么BFT會成為你的下一個購物“心頭好”。 BFT的優勢 高效安全的支付體系&#xff1a;BFT交易系統保障了交易的安全性和透明性&#xff0c;讓你的每一筆消費都安全…

Build a Large Language Model (From Scratch)附錄B(gpt-4o翻譯版)

來源&#xff1a;https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

《More Effective C++》《雜項討論——34、如何在同一個程序中結合C++和C》

文章目錄 1、Terms34:如何在同一個程序中結合C和C1.1 名稱重整1.2 statics的初始化1.3 動態內存的分配1.4 數據結構的兼容性 2、總結3、參考 1、Terms34:如何在同一個程序中結合C和C 在大型項目中一般都用C進行開發&#xff0c;但是不可避免會用一些C語言進行底層的調用。在確…

【寵粉贈書】UML 2.5基礎、建模與設計實踐

為了回饋粉絲們的厚愛&#xff0c;今天小智給大家送上一套系統建模學習的必備書籍——《UML 2.5基礎、建模與設計實踐》。下面我會詳細給大家介紹這本書&#xff0c;文末留有領取方式。 圖書介紹 《UML 2.5基礎、建模與設計實踐》以實戰為主旨&#xff0c;結合draw.io免費軟件…