(單獨(dú)把一個(gè)東西說(shuō)清楚,然后再說(shuō)清楚另一個(gè),這樣,它們的區(qū)別自然就出來(lái)了,混在一起說(shuō),則
很難說(shuō)清楚)
==操作符專門用來(lái)比較兩個(gè)變量的值是否相等,也就是用于比較變量所對(duì)應(yīng)的內(nèi)存中所存儲(chǔ)的數(shù)值是
否相同,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,只能用==操作符.
如果一個(gè)變量指向的數(shù)據(jù)是對(duì)象類型的,那么,這時(shí)候涉及了兩塊內(nèi)存,對(duì)象本身占用一塊內(nèi)存(堆
內(nèi)存),變量也占用一塊內(nèi)存,例如Objet obj = new Object();變量obj是一個(gè)內(nèi)存,new Object()是另一個(gè)內(nèi)
存,此時(shí),變量obj 所對(duì)應(yīng)的內(nèi)存中存儲(chǔ)的數(shù)值就是對(duì)象占用的那塊內(nèi)存的首地址.對(duì)于指向?qū)ο箢愋偷?br/>變量,如果要比較兩個(gè)變量是否指向同一個(gè)對(duì)象,即要看這兩個(gè)變量所對(duì)應(yīng)的內(nèi)存中的數(shù)值是否相等,這
時(shí)候就需要用==操作符進(jìn)行比較.
equals 方法是用于比較兩個(gè)獨(dú)立對(duì)象的內(nèi)容是否相同
,就好比去比較兩個(gè)人的長(zhǎng)相是否相同,它比較
的兩個(gè)對(duì)象是獨(dú)立的.例如,對(duì)于下面的代碼:
String a=new String("foo");
String b=new String("foo");
兩條new 語(yǔ)句創(chuàng)建了兩個(gè)對(duì)象,然后用a,b 這兩個(gè)變量分別指向了其中一個(gè)對(duì)象,這是兩個(gè)不同的對(duì)
象,它們的首地址是不同的,即a 和b 中存儲(chǔ)的數(shù)值是不相同的,所以,表達(dá)式a==b 將返回false,而這
兩個(gè)對(duì)象中的內(nèi)容是相同的,所以,表達(dá)式a.equals(b)將返回true.
在實(shí)際開(kāi)發(fā)中,我們經(jīng)常要比較傳遞進(jìn)行來(lái)的字符串內(nèi)容是否等,例如,String input
= …;input.equals(“quit”),許多人稍不注意就使用==進(jìn)行比較了,這是錯(cuò)誤的,隨便從網(wǎng)上找?guī)讉€(gè)項(xiàng)目實(shí)戰(zhàn)
的教學(xué)視頻看看,里面就有大量這樣的錯(cuò)誤.記住,字符串的比較基本上都是使用equals方法.
如果一個(gè)類沒(méi)有自己定義equals方法,那么它將繼承Object 類的equals方法,Object類的equals方法
的實(shí)現(xiàn)代碼如下:
boolean equals(Object o){
return this==o;}這說(shuō)明,如果一個(gè)類沒(méi)有自己定義equals 方法,它默認(rèn)的equals 方法(從Object 類繼承的)就是使
用==操作符,也是在比較兩個(gè)變量指向的對(duì)象是否是同一對(duì)象,這時(shí)候使用equals和使用==會(huì)得到同樣的
結(jié)果,如果比較的是兩個(gè)獨(dú)立的對(duì)象則總返回false.如果你編寫的類希望能夠比較該類創(chuàng)建的兩個(gè)實(shí)例對(duì)
內(nèi)容是相同的.
"=="和equals方法究竟有什么區(qū)別?
"=="和equals方法究竟有什么區(qū)別?
其他人氣:259 ℃時(shí)間:2020-06-25 00:52:48
優(yōu)質(zhì)解答
我來(lái)回答
類似推薦
- equals和==的區(qū)別
- 加點(diǎn)字讀音全都相同的一項(xiàng)是( ) A.商酌 燒灼 著迷 遠(yuǎn)見(jiàn)卓識(shí) B.喧鬧 渲染 漩渦 頭暈?zāi)垦?/a>
- 袋子里的紅球是白球的3倍,從袋子里取出白球和紅球,每次取出白球3個(gè)、紅球5個(gè).取了若干次后,白球剛好取玩,紅球還剩44個(gè),問(wèn)有白球和紅球各幾個(gè)?
- y''=f(x,y')這里括號(hào)代表什么意思,關(guān)于x y‘的函數(shù)?
- 李大爺用51.4米長(zhǎng)的籬笆圍成一個(gè)半圓形雞舍,雞舍的面積有多大? (急呀!)
- 蒼穹的近義詞
- 一堆木頭,堆放成了梯形,下層堆放了12根,上層堆放了5根,一共堆放了5層,一共有幾根?
- 如何知道地核主要由高密度的鐵鎳合金組成?
- 設(shè)兩個(gè)隨機(jī)變量X 和Y 相互獨(dú)立, X 服從均值為2 的指數(shù)分布,Y 服從均 值為4 的指數(shù)分布,問(wèn)X>Y的概率是多
- 兩塊正方形紙板,一塊紙板面積喂243平方米,另一塊紙板的面積為75平方米
- 圖中正方形的邊長(zhǎng)是10厘米,三角形甲的面積比三角形乙的面積少20平方厘米,求線段AB的長(zhǎng).
- 不過(guò)你將是我?jiàn)^斗的目標(biāo) 用英語(yǔ)翻譯
猜你喜歡
- 1學(xué)會(huì)忘記是生活的技術(shù),學(xué)會(huì)微笑是生活的藝術(shù)!
- 2怎樣求絕對(duì)值
- 3求 給心理老師的一封信 為題寫一封信
- 4成語(yǔ)對(duì)對(duì)子 粗茶淡飯( ) 流芳百世( ) 雪中送炭( )伶牙俐齒()眉開(kāi)眼笑()精雕細(xì)刻
- 5為什么大象用鼻子吸水不會(huì)嗆著?
- 6一個(gè)能裝下500g水的瓶子能否裝下500g的酒精,若不能裝下最多能裝下多少克酒精
- 71.1995×1996.1996-1996×1995.1995
- 8在實(shí)驗(yàn)中,如果不能確定電流表的量程,則應(yīng)該采用()法
- 9一個(gè)數(shù)的5倍等于2.4,求這個(gè)數(shù)是多少?解方程
- 10可逆反應(yīng)的定義
- 11如圖 D是BC延長(zhǎng)線上一點(diǎn),角ABC,角ACD的平分線交與E,求證角E=1/2角A
- 12物體只受一個(gè)力(比如只受重力)在做什么運(yùn)動(dòng)?