Java中Object.equals和String.equals的區(qū)別詳解
前言
Java中的堆和常量池的區(qū)別是什么呢?Object.equals與String.equals的區(qū)別呢?下面讓我們通過一個小示例讓你明白它~
1、基礎知識
Java的存儲空間:寄存器、棧、堆、靜態(tài)存儲區(qū)、常量存儲區(qū)(常量池)、其他存儲位置。
此處重點介紹堆和常量存儲區(qū):
堆:存儲new的對象;
常量池:用來存儲final static、String的常量。
2、Object.equals與String.equals的區(qū)別
Object.equals(==):比較內(nèi)存地址;
String.equals: 比較內(nèi)容即可,不管內(nèi)存地址。
總結:
Object.equals相等,String.equals一定相等;
String.equals相等,Object.equals不一定相等。
3、實戰(zhàn)演練
public class TestString { public static void main(String[] args){ // 維護在常量池里面 String a="hello"; String b="hello"; // new出來的所有對象都在堆內(nèi)存中 // 只要是new出現(xiàn)來的都是新對象 String c=new String("hello"); String d=new String("hello"); // 對比內(nèi)存地址 //true System.out.println(a==b); //false System.out.println(a==c); //false System.out.println(c==d); //對比內(nèi)容 //true System.out.println(a.equals(b)); //true System.out.println(a.equals(c)); //true System.out.println(c.equals(d)); } }
解釋:
a,b都是常量,a和b都是指向常量存儲區(qū)中的常量’hello’,所以無論內(nèi)容還是內(nèi)存地址都是一樣的,因此a==b以及a.equals(b)都是true;
c,d都是變量,他們都是new出來的對象,里面存在兩個hello變量,c和d分別指向自己的hello變量,所以c和d內(nèi)容一樣,但是內(nèi)存地址不一樣,因此c==d是true,但是c.equals(d)為true。
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Java 獲取當前時間及實現(xiàn)時間倒計時功能【推薦】
這篇文章主要介紹了Java 獲取當前時間及實現(xiàn)時間倒計時功能 ,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05詳解SpringBoot2.0的@Cacheable(Redis)緩存失效時間解決方案
這篇文章主要介紹了詳解SpringBoot2.0的@Cacheable(Redis)緩存失效時間解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java-Redis-Redisson分布式鎖的功能使用及實現(xiàn)
這篇文章主要介紹了Java-Redis-Redisson-分布式鎖的功能使用及實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08Java實現(xiàn)解析zip壓縮包并獲取文件內(nèi)容
這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)頁面上傳一個源碼壓縮包,后端將壓縮包解壓,并獲取每個文件中的內(nèi)容,感興趣的可以動手嘗試一下2022-07-07Java使用動態(tài)規(guī)劃算法思想解決背包問題
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價格最高2022-04-04Java8實現(xiàn)優(yōu)雅的獲取重復字符與次數(shù)
這篇文章主要為大家詳細介紹了在Java8中,我們應該如何進行字符及字符串的去重,以及計算去重次數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2023-12-12如何利用反射生成?MyBatisPlus中QueryWrapper動態(tài)條件
這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動態(tài)條件,分享在MyBatisPlus中經(jīng)常會用到代碼來構造查詢條件等內(nèi)容,需要的小伙伴可以參考一下2022-02-02