1.== 為運(yùn)算符,equal 為String數(shù)據(jù)類型的比較方法
相同內(nèi)容的對(duì)象地址不一定相同,但相相同地址的對(duì)象內(nèi)容一定相同;== 比較的是值是否相等,equal比較的是是否是同一個(gè)對(duì)象
2.把對(duì)象想象成一個(gè)房子,而引用則是門牌號(hào)。如果兩個(gè)引用指向同一個(gè)房子,那么它們就是相等的;否則它們就不相等。
使用操作符比較的就是兩個(gè)門牌號(hào)是否相等,即它們是否指向同一個(gè)房子。如果兩個(gè)門牌號(hào)相等,則返回true;否則返回false。
而使用equals()方法比較的則是兩個(gè)房子內(nèi)部的裝修是否一樣,即它們?cè)谶壿嬌鲜欠癖硎就患虑?。如果兩個(gè)房子內(nèi)部裝修一樣,則equals()返回true;否則返回false。
==操作符比較的是兩個(gè)對(duì)象的引用是否相等,即它們是否指向同一個(gè)內(nèi)存地址;而equals()方法比較的是兩個(gè)對(duì)象內(nèi)容是否相等,即它們?cè)谶壿嬌鲜欠癖硎就患虑椤?/p>
==操作符通常用于比較基本類型數(shù)據(jù)(如int、double、boolean等)或判斷兩個(gè)對(duì)象是否為同一個(gè)實(shí)例;而equals()方法通常用于比較復(fù)雜類型數(shù)據(jù)(如String、Object等)或判斷兩個(gè)對(duì)象內(nèi)容是否相等。
舉個(gè)例子,假設(shè)我們有以下代碼:
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
System.out.println(str1.equals(str3)); // true
在這段代碼中,我們創(chuàng)建了三個(gè)字符串對(duì)象:str1和str2使用了字面量方式創(chuàng)建,而str3使用了new關(guān)鍵字顯式創(chuàng)建。然后我們分別使用==和equals()來(lái)比較這三個(gè)字符串對(duì)象。
第一行輸出true,因?yàn)閟tr1和str2指向同一個(gè)內(nèi)存地址(常量池中),所以它們的引用相等(即門牌號(hào)相同)。
第二行輸出false,因?yàn)閟tr1和str3指向不同的內(nèi)存地址(堆內(nèi)存中),所以它們的引用不相等(即門牌號(hào)不同)。
第三行輸出true,因?yàn)殡m然str1和str3引用不同的內(nèi)存地址(即門牌號(hào)不同),但它們表示同一個(gè)字符串(內(nèi)容相等)。
總之,在Java中要正確地比較兩個(gè)對(duì)象是否相等,需要根據(jù)具體情況選擇合適的方式。對(duì)于基本類型數(shù)據(jù)或判斷兩個(gè)對(duì)象是否為同一個(gè)實(shí)例時(shí)可以使用==進(jìn)行比較;對(duì)于復(fù)雜類型數(shù)據(jù)或判斷兩個(gè)對(duì)象內(nèi)容是否相等時(shí)應(yīng)該使用equals()方法來(lái)進(jìn)行比較。
3.操作符比較的是兩個(gè)對(duì)象的引用是否相等,即它們是否指向同一個(gè)內(nèi)存地址。如果兩個(gè)對(duì)象的引用相等,則返回true;否則返回false
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
在這段代碼中,我們創(chuàng)建了三個(gè)字符串對(duì)象:str1和str2使用了字面量方式創(chuàng)建,而str3使用了new關(guān)鍵字顯式創(chuàng)建。然后我們分別使用==來(lái)比較這三個(gè)字符串對(duì)象。
第一行輸出true,因?yàn)閟tr1和str2指向同一個(gè)內(nèi)存地址(常量池中),所以它們的引用相等。
第二行輸出false,因?yàn)閟tr1和str3指向不同的內(nèi)存地址(堆內(nèi)存中),所以它們的引用不相等。
equals()方法比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,即它們?cè)谶壿嬌鲜欠癖硎就患虑椤H绻麅蓚€(gè)對(duì)象的內(nèi)容相等,則equals()返回true;否則返回false。
舉個(gè)例子,我們可以再看看之前提到過的字符串對(duì)象:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-473695.html
String str1 = "hello";
String str3 = new String("hello");
System.out.println(str1.equals(str3)); // true
在這段代碼中,我們分別創(chuàng)建了兩個(gè)字符串對(duì)象:str1和str3。雖然它們引用不同的內(nèi)存地址(一個(gè)在常量池中,一個(gè)在堆內(nèi)存中),但是它們表示同一個(gè)字符串(內(nèi)容相等)。因此,在使用equals()方法進(jìn)行比較時(shí)會(huì)返回true。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473695.html
到了這里,關(guān)于6.6---每天一點(diǎn)點(diǎn)--- Java基礎(chǔ)之==和equals區(qū)別并舉例說(shuō)明(總復(fù)習(xí)+深入版)---詳細(xì)+舉例(小白也能看懂)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!