亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

正在回答

5 回答

在比較數值時,==和equals方法的作用是一樣的;比較對象時,==比較兩個對象的內存地址是否相同(即是否為同一個對象),而equals方法大部分時候會被重寫,用來比較兩個對象的內容是否相同

1 回復 有任何疑惑可以回復我~

==操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個引用變量是否相等,就只能用==操作符。

如果一個變量指向的數據是對象類型的,那么,這時候涉及了兩塊內存,對象本身占用一塊內存(堆內存),變量也占用一塊內存,例如Object obj = new Object(); 變量obj是一塊內存,new Object()是另一塊內存,此時,變量obj所對應的內存中存儲的數值就是對象占用的那塊內存的首地址。對于指向對象類型的變量,如果要比較兩個變量是否指向同一個對象,即要看這兩個變量所對應的內存中的數值是否相等,這時候就需要用==操作符進行比較。

equals方法是用于比較兩個獨立對象的內容是否相同,就好比比較兩個人的長相是否相同,它比較的兩個對象是獨立的。例如,對于下面的代碼:

String a = new String("foo");

String b = new String("foo");

兩條new語句創建了兩個對象,然后用a/b這兩個變量分別指向了其中一個對象,這是兩個不同的對象,他們的首地址是不同的,即a和b中存儲的數值是不同的,所以,表達式a==b將返回false,而這兩個對象中內容是相同的,所以表達式a.equals(b)將返回true。

注意:字符串的比較基本都是使用equals方法,雖然很多地方錯寫成使用==。建議在自己定義的類中重寫equals方法,由自己決定什么情況下認為兩個對象的內容是相同的,不然該類會繼承Object類的equals方法:

boolean equals(Object o)

{

????return this == o;

}

也是比較兩個變量是否指向同一個對象,顯然,這在大多數時候并不是我們想要的。

1 回復 有任何疑惑可以回復我~

==比較的是地址

equals 是個方法 你怎么定義的 他就比較什么 可以比較任意內容 在沒定義equals的情況下默認調用的就是== 比較的是地址

1 回復 有任何疑惑可以回復我~
?public?boolean?equals(Object?anObject)?{
????????if?(this?==?anObject)?{
????????????return?true;
????????}
????????if?(anObject?instanceof?String)?{
????????????String?anotherString?=?(String)?anObject;
????????????int?n?=?value.length;
????????????if?(n?==?anotherString.value.length)?{
????????????????char?v1[]?=?value;
????????????????char?v2[]?=?anotherString.value;
????????????????int?i?=?0;
????????????????while?(n--?!=?0)?{
????????????????????if?(v1[i]?!=?v2[i])
????????????????????????????return?false;
????????????????????i++;
????????????????}
????????????????return?true;
????????????}
????????}
????????return?false;
????}

上面這個是String的equals()方法.

在對String類型的對比中,equals()首先對兩個String變量進行==號運算,也就是說,首先對兩個String變量的地址進行對比,如果地址不一樣(也就是引用),就進行兩個String變量的值進行對比.

==比較的是2個對象的地址,而equals比較的是2個對象的內容,顯然,當equals為true時,==不一定為true。

自己對源碼的理解,有些回答欠妥的地方.

2 回復 有任何疑惑可以回復我~

== 和 equals 的區別
  1. == 是一個運算符。
  2.equals則是string對象的方法,可以.(點)出來。
  
  我們比較無非就是這兩種 1、基本數據類型比較 2、引用對象比較
  1、基本數據類型比較
  ==和equals都比較兩個值是否相等。相等為true 否則為false;
  
  2、引用對象比較
  ==和equals都是比較棧內存中的地址是否相等 。相等為true 否則為false;
  
  需注意幾點:
  1、string是一個特殊的引用類型。對于兩個字符串的比較,不管是 == 和 Equals 這兩者比較的都是字符串是否相同;
  2、當你創建兩個string對象時,內存中的地址是不相同的,你可以賦相同的值。
  所以字符串的內容相同。引用地址不一定相同,(相同內容的對象地址不一定相同),但反過來卻是肯定的;
  3、基本數據類型比較(string 除外) == 和 equals 兩者都是比較值;

其實java第二季會講到這個問題滴~~~有視頻的,親~~~

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

==跟equals的區別是什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號