什么是==?
== 等于比較運算符,如果進行比較的兩個操作數(shù)都是數(shù)值類型,即使他們的數(shù)據(jù)類型不相同,只要他們的值相等,也都將返回true.如果兩個操作數(shù)都是引用類型,那么只有當兩個引用變量的類型具有父子關(guān)系時才可以比較,而且這兩個引用必須指向同一個對象,才會返回true。(在這里我們可以理解成==比較的是兩個變量的內(nèi)存地址)
什么是equals()?
equals()方法是Object類的方法,在Object類中的equals()方法體內(nèi)實際上返回的就是使用==進行比較的結(jié)果.但是我們知道所有的類都繼承Object,而且Object中的equals()方法沒有使用final關(guān)鍵字修飾,那么當我們使用equal()方法進行比較的時候,我們需要關(guān)注的就是這個類有沒有重寫Object中的equals()方法.
填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!
區(qū)別
== 是java提供的等于比較運算符,用來比較兩個變量指向的內(nèi)存地址是否相同。而equals()是Object提供的一個方法。Object中equals()方法的默認實現(xiàn)就是返回兩個對象==的比較結(jié)果。但是equals()可以被重寫,所以我們在具體使用的時候需要關(guān)注equals()方法有沒有被重寫。
結(jié)論:
賦值方式中如果調(diào)用了new關(guān)鍵字,一定會在內(nèi)存中給你分配一個新的地址。
給Integer類型賦值的時候,如果沒有調(diào)用new關(guān)鍵字,并且值在-128與+127之間,包括-128和+127,那么指向的都是同一個內(nèi)存位置。
Integer類中重寫了equals()方法,使用equals()方法進行比較的時候,實際上比較的內(nèi)存中最終指向的值的內(nèi)存位置,不是直接比較變量的內(nèi)存位置。
上一篇:Java基礎(chǔ)教程之JVM運行時內(nèi)存
下一篇: 沒有了
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導游考試社會工作者司法考試職稱計算機營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論