JAVA學習*Object類

Object類

Object類是所有類的父類
類中有一些方法(都需要掌握)
在這里插入圖片描述

toString()方法

在學習類的對象的時候有介紹過了,當我們重新給此方法就會打印類與對象的信息

equals()方法

在這里插入圖片描述
在Java中的比較,
如果==左右兩側是基本類型變量,比較的是變量中值是否相同。
如果==左右兩側是引用類型變量,比較的是引用變量地址是否相同。
如果要比較引用類型指向的值相同,需要重寫equals()方法。

代碼展示:

import java.util.Objects;
public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}
public class Test {public static void main(String[] args) {Student stu1 = new Student("lisi",18);Student stu2 = new Student("lisi",18);System.out.println(stu1 == stu2);System.out.println(stu1.equals(stu2));System.out.println("----------");String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1 == str2);System.out.println(str1.equals(str2));}
}

輸出:
false
flase
----------
false
true

代碼解釋:

1、對于對象,== 比較的是引用,即是否指向同一內存地址。Student是類stu1和stu2是引用變量,分別引用 Student 類創建的對象。
2、用equals()方法,當沒有重寫equals()方法時,調用父類Object類的equals()方法,比較的是兩個地址是否相同,而非指向的內容是否相同。
3、為了能比較指向的內容是否相同,需要重寫equals()方法。
(可以借助編譯器生成)

	@Override//進行了比較合理性的判斷public boolean equals(Object o) {if (this == o) return true;//自己比自己if (o == null || getClass() != o.getClass()) return false;//為空和類型不相同,返回falseStudent student = (Student) o;return age == student.age && Objects.equals(name, student.name);}

此時之前的輸出結果發生變化

輸出:
false
true
----------
false
true

4、為什么String類的equals()方法比較的是指向的內容?因為String本身已經重寫了equals()方法。

hashCode()方法

源碼:

public native int hashCode();

我們認為兩個名字相同,年齡相同的對象,將存儲在同?個位置。當沒有重寫hashCode()方法時,他們的hash值不相同。
我們需要重寫hashCode()方法。
(可以借助編譯器生成)

    @Overridepublic int hashCode() {return Objects.hash(name, age);}

其他關于hashCode()方法知識后續在講。

其他方法之后學習中介紹

總結

對于我們自定義的類時,我們最好通過編譯器重寫toString()方法、equals()方法等。
在這里插入圖片描述

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

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

相關文章

《Operating System Concepts》閱讀筆記:p471-p472

《Operating System Concepts》學習第 37 天,p471-p472 總結,總計 2 頁。 一、技術總結 1.NAS (1)定義 network-attached storage (NAS):Storage accessed from a computer over a network. 雖然平時經常看到 NAS 這個名稱,之…

gonet開源游戲服務器環境配置

1.mysql搭建 搜索mysql-server apt安裝包名 sudo apt search mysql-server 安裝mysql-server sudo apt-get install mysql-server 安裝完成后會,啟動mysql服務及創建系統服務 查看服務狀態 systemctl status mysql.service 使用超級權限登陸mysql sudo mysql 授…

HarmonyOS NEXT(九) :圖形渲染體系

HarmonyOS NEXT(九) :圖形渲染體系 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,可以分享一下給大家。點擊跳轉到網站。 https://www.captainbed.cn/ccc 文章目錄 HarmonyOS NEXT&#xff0…

網絡安全威脅與防護措施(上)

1. SQL注入(SQL Injection) SQL注入是一種常見的安全漏洞,攻擊者通過在用戶輸入中插入惡意的SQL代碼,從而篡改、操控數據庫,執行未授權的數據庫操作,如查詢、修改、刪除數據,甚至獲取系統控制權…

3.22模擬面試

前端模擬面試(1 年經驗) 面試時長:40-60 分鐘 面試難度:初中級 技術棧:Vue 3、TypeScript、微前端(qiankun)、Webpack/Rspack、Ant Design、組件庫遷移 一、基礎知識 HTML & CSS 介紹一下…

kotlin 函數引用

引言 先確認一下,什么叫做引用 Object obj new Object() //這里的obj就是一個強引用 再確認一個結論: lambda 屬于函數類型對象 。 fun methodResponseResult(msg: String , respo:(Int, String)->Unit){}fun methodRespoResunt(type: Int ,msg: S…

微前端qiankun框架的使用

文章描述 隨著工作時間的增加,發現公司的項目逐漸多了起來,有一個項目比較龐大,是需要集成多個子系統而形成的大項目。其中便是使用微前端的概念qiankun框架來集成其他多個子項目的。接下來,一起來看一下qiankun框架的具體使用方…

基于CVX優化器的儲能電池調峰調頻算法matlab仿真

目錄 1.課題概述 2.系統仿真結果 3.核心程序與模型 4.系統原理簡介 4.1 原理概述 4.2 CVX工具箱概述 5.完整工程文件 1.課題概述 基于CVX優化器的儲能電池調峰調頻算法matlab仿真。CVX 是一種用于求解凸優化問題的強大工具。凸優化問題具有良好的數學性質,能…

回歸——數學公式推導全過程

文章目錄 一、案例引入 二、如何求出正確參數 1. 最速下降法 1)多項式回歸 2)多重回歸 2. 隨機梯度下降法 一、案例引入 以Web廣告和點擊量的關系為例來學習回歸,假設投入的廣告費和點擊量呈現下圖對應關系。 思考:如果花了…

微服務中的服務發現

微服務中的服務發現 什么是服務發現 服務發現是微服務架構中的關鍵機制,用于確定各個微服務的地址。例如,在一個 API Server 服務中,我們可能需要調用 User 服務來處理用戶注冊、登錄和信息查詢,也可能需要 Product 服務來獲取商…

C#與西門子PLC的六大通信庫

C#與西門子PLC的六大通信庫: 一、S7.NET S7.NET是一款開源的S7協議通信庫,支持西門子S7通信。 二、Sharp7 Sharp7與S7.NET一樣,是一款.NET版本的S7通信庫。 三、Snap7 Snap7是一個開源的C通信庫,支持西門子S7通信。 四、Prodave P…

IOS接入微信方法

導入SDK 和配置 SDK 的不做介紹; 1 在IOS 開發者中心 Identifiers 打開‘Associated Domains’ 2 建立一個文件(不帶后綴的)apple-app-site-association, teamid在 IOS 開發者中心的會員找,appid在 xcode里面找 {"applin…

DHCPv6 Stateless Vs Stateful Vs Stateless Stateful

DHCPv6常見配置模式 在 IPv6 網絡中,DHCPv6 的 Stateless(無狀態)、Stateful(有狀態) 和 Stateless + Stateful(混合模式) 是三種常見的配置模式。它們的主要區別在于客戶端如何獲取 IPv6 地址和其他網絡配置信息(如 DNS 服務器)。 Stateless(無狀態)模式 Statele…

HTTPS協議—加密算法和中間攻擊人的博弈

活動發起人小虛竹 想對你說: 這是一個以寫作博客為目的的創作活動,旨在鼓勵大學生博主們挖掘自己的創作潛能,展現自己的寫作才華。如果你是一位熱愛寫作的、想要展現自己創作才華的小伙伴,那么,快來參加吧&#xff01…

Java替換jar包中class文件

在更新java應用版本的運維工作中,由于一些原因,開發沒辦法給到完整的jar包,這個時候,就可以只將修改后的某個Java類的class文件替換掉原來iar包中的class文件,重新啟動服務即可: 1、將jar包和將要替換的cl…

【UI設計】一些好用的免費圖標素材網站

阿里巴巴矢量圖標庫https://www.iconfont.cn/國內最大的矢量圖標庫之一,擁有 800 萬 圖標資源。特色功能包括團隊協作、多端適配、定制化編輯等,適合企業級項目、電商設計、中文產品開發等場景。IconParkhttps://iconpark.oceanengine.com/home字節跳動…

【10】高效存儲MongoDB的用法

目錄 一、什么是MongoDB 二、準備工作 (1)安裝MongoDB ?(2)安裝pymongo庫 三、連接MongoDB 四、指定數據庫 五、指定集合 六、插入數據 (1) insert 方法 (2)insert_one(…

MATLAB+Arduino利用板上的按鍵控制板上Led燈

幾年不使用,之前的知識都忘掉了。需要逐步撿起來。 1 熟悉按鍵的使用 2熟悉燈的控制 1 電路 我們將通過 MATLAB 的 Arduino 支持包與 Arduino 板通信,讀取按鍵狀態并控制 LED 燈的亮滅。 按鍵:連接到 Arduino 的數字引腳(例如…

《深度學習》——YOLOv3詳解

文章目錄 YOLOv3簡介YOLOv3核心原理YOLOv3改進YOLOv3網絡結構 YOLOv3簡介 YOLOv3(You Only Look Once, version 3)是一種先進的實時目標檢測算法,由 Joseph Redmon 和 Ali Farhadi 開發。它在目標檢測領域表現出色,具有速度快、精…

【項目設計】網頁版五子棋

文章目錄 一、項目介紹1.項目簡介2.開發環境3.核心技術4.開發階段 二、Centos-7.6環境搭建1.安裝wget工具2.更換軟件源(yum源)3.安裝scl工具4.安裝epel軟件源5.安裝lrzsz傳輸工具6.安裝高版本gcc/g編譯器7.安裝gdb調試器8.安裝git9.安裝cmake10.安裝boost庫11.安裝Jsoncpp庫12.…