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

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

==和equals()方法

之前講到對比兩個對象的內存地址是可以用equals()方法或者==的

但為什么String對象用equals()方法只能對比內容而不能對比內存地址呢?

正在回答

5 回答

String 中的equals 方法是被重寫的 如果不理解? 你可以去直接看一下源碼 你就會找到了

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

因為String類中的euqals方法就是重寫的

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

String Str1=new String("runoob");和String Str1="runoob";的區別在于:String Str1=new String("runoob")是在堆中創建一個對象(也可以理解為新的地址)然后將常量池中的runoob付給創建的對象(地址)最后將對象(地址)從堆中付給棧中的Str1,由于在堆中創建了新的地址所以將原來棧中的地址代替掉,String Str1="runoob"是直接從堆中的常量池中取將runoob值直接賦給棧中的地址。

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

奶尤糯米團子 提問者

好的好的 那什么時候應該用第一種什么時候應該用第二種呢?
2020-02-23 回復 有任何疑惑可以回復我~

但是之前講到比較兩個對象的時候,用的equals()方法比較得是兩個對象的地址是否相同呀,重寫的equals()方法才是比較內容呀?

而且想請教一下String Str1=new String("runoob");和String Str1="runoob";的區別在哪呀?new String("runoob")這里面的runoob是參數嗎?那String的有參構造方法是系統自帶的嗎?

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

equals()方法不是比對地址,是字符串與指定對象進行比較

public?class?Test?{???
?public?static?void?main(String?args[])?{?
?????String?Str1?=?new?String("runoob");????
????String?Str2?=?Str1;?
???String?Str3?=?new?String("runoob");????
???boolean?retVal;????????
???retVal?=?Str1.equals(?Str2?);???????
???System.out.println("返回值?=?"?+?retVal?);?
????retVal?=?Str1.equals(?Str3?);???
???System.out.println("返回值?=?"?+?retVal?);??
?????}
??????}
0 回復 有任何疑惑可以回復我~
#1

奶尤糯米團子 提問者

但是之前學習對象那一節的時候,用equals()比較兩個對象時,他說的是在對比內存地址是否一樣呀?
2020-02-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409775    人
  • 解答問題       4546    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

==和equals()方法

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

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

幫助反饋 APP下載

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

公眾號

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