国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java Java入門 詳細(xì)講解equals與==的區(qū)別

詳細(xì)講解equals與==的區(qū)別

Sep 28, 2020 pm 04:17 PM
== equals

詳細(xì)講解equals與==的區(qū)別

首先我們來介紹一下JVM中的內(nèi)存分配知識:

(推薦教程:java課程

在JVM中,內(nèi)存分為堆內(nèi)存跟棧內(nèi)存。他們二者的區(qū)別是: 當(dāng)我們創(chuàng)建一個對象(new Object)時,就會調(diào)用對象的構(gòu)造函數(shù)來開辟空間,將對象數(shù)據(jù)存儲到堆內(nèi)存中,與此同時在棧內(nèi)存中生成對應(yīng)的引用,當(dāng)我們在后續(xù)代碼中調(diào)用的時候用的都是棧內(nèi)存中的引用。還需注意的一點,基本數(shù)據(jù)類型是存儲在棧內(nèi)存中。

初步認(rèn)識equals與==的區(qū)別:

==是判斷兩個變量或?qū)嵗遣皇侵赶蛲粋€內(nèi)存空間,equals是判斷兩個變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同。==是指對內(nèi)存地址進(jìn)行比較,equals()是對字符串的內(nèi)容進(jìn)行比較。==指引用是否相同,?equals()指的是值是否相同。

用一張圖可以簡要的表現(xiàn)他們之間的關(guān)系:

a339c4ed4b153481c4d077c1915c4d7.png

測試:

f9b72301df98cb65d4e93f4e2d70b30.png

equals與==的區(qū)別詳解:

== 比較的是變量(棧)內(nèi)存中存放的對象的(堆)內(nèi)存地址,用來判斷兩個對象的地址是否相同,即是否是指相同一個對象。比較的是真正意義上的指針操作。equals用來比較的是兩個對象的內(nèi)容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對象,如果沒有對該方法進(jìn)行覆蓋的話,調(diào)用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。

String s="abcd"是一種非常特殊的形式,和new 有本質(zhì)的區(qū)別。它是java中唯一不需要new 就可以產(chǎn)生對象的途徑。以String s="abcd";形式賦值在java中叫直接量,它是在常量池中而不是象new一樣放在壓縮堆中。

這種形式的字符串,在JVM內(nèi)部發(fā)生字符串拘留,即當(dāng)聲明這樣的一個字符串后,JVM會在常量池中先查找有有沒有一個值為"abcd"的對象,如果有,就會把它賦給當(dāng)前引用.即原來那個引用和現(xiàn)在這個引用指點向了同一對象,?如果沒有,則在常量池中新創(chuàng)建一個"abcd",下一次如果有String s1 = "abcd";又會將s1指向"abcd"這個對象,即以這形式聲明的字符串,只要值相等,任何多個引用都指向同一對象。

而String s = new String("abcd");和其它任何對象一樣.每調(diào)用一次就產(chǎn)生一個對象,只要它們調(diào)用。也可以這么理解: String str = "hello"; 先在內(nèi)存中找是不是有"hello"這個對象,如果有,就讓str指向那個"hello"。

如果內(nèi)存里沒有"hello",就創(chuàng)建一個新的對象保存"hello". String str=new String ("hello") 就是不管內(nèi)存里是不是已經(jīng)有"hello"這個對象,都新建一個對象保存"hello"。

測試:

568e6184fc9f7c8149c0b69c1a94a00.png

相關(guān)推薦:java入門

以上是詳細(xì)講解equals與==的區(qū)別的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)