==和equals的區別(面試題)

==和equals有什么區別

????????對于基本數據類型,==比較的是值是否相等,對于引用類型則是比較的地址是否相等;對于equals來說,基本數據類型沒有equals方法,對于引用類型equals比較的是引用對象是否相同

那針對以上結論,我們來看看以下代碼:

我們可以看到對于引用對象使用==和equals結果都為false;對于String類型,它的底層默認重寫了equals和hashcode方法,重寫后的equals比較的就是對象的值。

那我們現在重寫Userinfo的equals和hashcode方法,再來進行輸出:

?package com.yinan.entity;?import lombok.*;?import java.io.Serializable;import java.util.Objects;?@Setter@Getter@ToStringpublic class Userinfo implements Serializable {private String username;private int ? password;?public Userinfo() {}?public Userinfo(String username, int password) {this.username = username;this.password = password;}?@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Userinfo userinfo = (Userinfo) o;return password == userinfo.password && Objects.equals(username, userinfo.username);}?@Overridepublic int hashCode() {return Objects.hash(username, password);}}
?@SpringBootTestpublic class JavaBaseTests {?// ?  測試equals和hashcode的區別@Testvoid ?testEqualsAndHashCode() {?Userinfo user1=new Userinfo("yinan",123);Userinfo user2=new Userinfo("yinan",123);boolean res=user1==user2?true:false;System.out.println(res);boolean re=user1.equals(user2);System.out.println(re);}}

這個時候重寫equals方法后就會發現結果變為了true。

總結==和equals的區別:

對于基礎數據類型,==比較的是值是否相等,基礎數據類型沒有equals方法

對于引用類型,==比較的是地址是否相同,equals如果被重寫的話比較的是值是否相同,如果沒有被重寫,則會使用Object里面的equals進行比較他們的地址是否相同

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

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

相關文章

西點領導力:卓越是怎樣練成的

今天剛看了一個美國西點軍校第50任校長:羅伯克卡斯倫的《為什么跟西點軍校學領導力培養》這個演講。從中受益良多,于是我就去了解了一下這位校長以及西點軍校。 西點軍校 西點軍校(United States Military Academy, USMA)&#…

Android常用加解密算法總結

Android開發中對于數據的傳輸和保存一定會使用加密技術,加密算法是最普遍的安保手段,多數情況數據加密后在需要使用源數據時需要再進行解密,但凡是都有例外。下面從可逆加密、不可逆、不純粹加密三種方式記錄一下常見的加解密算法。 加密技術…

【使用sudo apt-get出現報錯】——無法獲得鎖 /var/lib/dpkg/lock-open(11:資 源暫時不可用) ,是否有其他進程正占用它?

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、ubuntu中進程正在被占用1. 問題描述2. 原因分析3. 解決 總結 前言 一、ubuntu中進程正在被占用 1. 問題描述 在Ubuntu中,使用終端時輸入帶有…

C++函數不完整聲明報錯

擋在c中聲明如下的函數代碼段時,不會進行隱式的轉換。 double add(); int main(){double s add(1,2);return 0; } double add(double a,double b){return ab; } 在調用add時,main中為它提供了兩個參數,看起來可以被轉換成double類型。然而…

昇思25天學習打卡營第7天之二 | 模型保存與加載

1. 保存與加載 在訓練網絡模型的過程中,實際上我們希望保存中間和最后的結果,用于微調(fine-tune)和后續的模型推理與部署,本章節我們將介紹如何保存與加載模型。 1.1 導入依賴 # 導入numpy庫,并將其重命…

六月,允許自己做自己,別人做別人

今天結束后,2024 就過去一半了。 年初的規劃完成一半了嗎?如果沒有也沒關系,做你自己繼續前進。 家人來北京旅游,我累趴了 六月初,我搬家了,這次租了一整套房,是一個小倆居、還帶一個小閣樓。…

速盾:視頻cdn和網站cdn的相同點與不同點

CDN(Content Delivery Network)是一種分布式網絡架構,旨在為用戶提供高效、高質量的內容傳送服務。CDN主要通過將內容分發到全球各地的邊緣節點,并根據用戶的地理位置選擇最近的節點來提供內容,從而加速內容的傳輸并降…

【高考志愿】儀器科學與技術

目錄 一、專業介紹 1.1 專業概述 1.2 專業方向 1.3 主要課程 二、專業技能與素質培養 三、就業前景 四、個人發展規劃建議 五、儀器科學與技術專業排名 六、總結 一、專業介紹 1.1 專業概述 儀器科學與技術專業是一門綜合性極強的學科,它融合了測量、控制…

數學學習與研究雜志社《數學學習與研究》雜志社2024年第6期目錄

課改前沿 基于核心素養的高中數學課堂教學研究——以“直線與圓、圓與圓的位置關系”為例 張亞紅; 2-4 核心素養視角下初中生數學閱讀能力的培養策略探究 賈象虎; 5-7 初中數學大單元教學實踐策略探索 耿忠義; 8-10《數學學習與研究》投稿:cn7kantougao…

使用Python繪制極坐標圖

使用Python繪制極坐標圖 極坐標圖極坐標圖的優點使用場景 效果代碼 極坐標圖 極坐標圖(Polar Chart)是一種圖表類型,用于顯示在極坐標系中的數據。極坐標圖使用圓形坐標系,角度表示一個變量的值,半徑表示另一個變量的…

線程安全問題(二)——死鎖

死鎖 前言可重入鎖邏輯 兩個線程兩把鎖(死鎖)死鎖的特點多個線程多把鎖(哲學家就餐問題)總結 前言 在前面的文章中,介紹了鎖的基本使用方式——鎖 在上一篇文章中,通過synchronized關鍵字進行加鎖操作&am…

XML簡介XML 使用教程XML的基本結構XML的使用場景

學習總結 1、掌握 JAVA入門到進階知識(持續寫作中……) 2、學會Oracle數據庫入門到入土用法(創作中……) 3、手把手教你開發炫酷的vbs腳本制作(完善中……) 4、牛逼哄哄的 IDEA編程利器技巧(編寫中……) 5、面經吐血整理的 面試技…

VMware每次打開網絡設置都出現需要運行NetworkManager問題

每次打開都出現這個情況,是因為之前把NetworkManager服務服務關閉,重新輸入命令: sudo systemctl start NetworkManager.service或者 sudo service network-manager restart 即可解決,但是每次開機重啟都要打開就很麻煩&#xf…

【Chapter4】匯編語言及其程序設計,《微機系統》第一版,趙宏偉

一、匯編語言概述 **指令:**指使計算機完成某種操作的命令。 **程序:**完成某種功能的指令序列。 **軟件:**各種程序總稱。 **機器語言:**計算機能直接識別的語言。用機器語言寫出的程序稱為機器代碼。 **匯編語言&#xff1…

Forecasting from LiDAR via Future Object Detection

Forecasting from LiDAR via Future Object Detection 基礎信息 論文:cvpr2022paper https://openaccess.thecvf.com/content/CVPR2022/papers/Peri_Forecasting_From_LiDAR_via_Future_Object_Detection_CVPR_2022_paper.pdfgithub:https://github.co…

SyncUnsafeCell替換Mutex提高性能

1. 背景 在Rust開發過程中,很多情況下需要在不可變的情況下獲取可變性或者在多線程的情況下可以安全的貢獻可變數據。這種情況下我們一般使用**Mutex來實現通過加鎖來實現。現在我們可以通過使用SyncUnsafeCell來替代Mutex**。 2. SyncUnsafeCell SyncUnsafeCell…

【計算機網絡——1.1網絡internet】

網絡 就是用通信線路和通信設備把很多個“主機/端設備“相互聯系。然后按照某種溝通方式,專業術語叫“協議”,共享信息。 **( 計算機網絡:節點和邊構成的系統 節點: 主機節點:主機/端設備(手機&#x…

K8S之網絡深度剖析(一)(持續更新ing)

K8S之網絡深度剖析 一 、關于K8S的網絡模型 在K8s的世界上,IP是以Pod為單位進行分配的。一個Pod內部的所有容器共享一個網絡堆棧(相當于一個網絡命名空間,它們的IP地址、網絡設備、配置等都是共享的)。按照這個網絡原則抽象出來的為每個Pod都設置一個IP地址的模型也被稱作為I…

SpringBoot(一)創建一個簡單的SpringBoot工程

Spring框架常用注解簡單介紹 SpringMVC常用注解簡單介紹 SpringBoot(一)創建一個簡單的SpringBoot工程 SpringBoot(二)SpringBoot多環境配置 SpringBoot(三)SpringBoot整合MyBatis SpringBoot(四…

3.ROS串口實例

#include <iostream> #include <ros/ros.h> #include <serial/serial.h> #include<geometry_msgs/Twist.h> using namespace std;//運行打開速度控制插件&#xff1a; rosrun rqt_robot_steering rqt_robot_steering //若串口訪問權限不夠&#xff1a…