課程
/后端開發
/Java
/Java入門第三季
之前講到對比兩個對象的內存地址是可以用equals()方法或者==的
但為什么String對象用equals()方法只能對比內容而不能對比內存地址呢?
2020-02-19
源自:Java入門第三季 2-2
正在回答
String 中的equals 方法是被重寫的 如果不理解? 你可以去直接看一下源碼 你就會找到了
因為String類中的euqals方法就是重寫的
String Str1=new String("runoob");和String Str1="runoob";的區別在于:String Str1=new String("runoob")是在堆中創建一個對象(也可以理解為新的地址)然后將常量池中的runoob付給創建的對象(地址)最后將對象(地址)從堆中付給棧中的Str1,由于在堆中創建了新的地址所以將原來棧中的地址代替掉,String Str1="runoob"是直接從堆中的常量池中取將runoob值直接賦給棧中的地址。
奶尤糯米團子 提問者
但是之前講到比較兩個對象的時候,用的equals()方法比較得是兩個對象的地址是否相同呀,重寫的equals()方法才是比較內容呀?
而且想請教一下String Str1=new String("runoob");和String Str1="runoob";的區別在哪呀?new String("runoob")這里面的runoob是參數嗎?那String的有參構造方法是系統自帶的嗎?
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?);?? ?????} ??????}
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
2 回答equals方法
2 回答關于equals方法
1 回答equals方法重寫
2 回答重寫equals方法
2 回答關于重寫hashCode()和equals()方法的疑惑?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-05-05
String 中的equals 方法是被重寫的 如果不理解? 你可以去直接看一下源碼 你就會找到了
2020-03-05
因為String類中的euqals方法就是重寫的
2020-02-22
String Str1=new String("runoob");和String Str1="runoob";的區別在于:String Str1=new String("runoob")是在堆中創建一個對象(也可以理解為新的地址)然后將常量池中的runoob付給創建的對象(地址)最后將對象(地址)從堆中付給棧中的Str1,由于在堆中創建了新的地址所以將原來棧中的地址代替掉,String Str1="runoob"是直接從堆中的常量池中取將runoob值直接賦給棧中的地址。
2020-02-21
但是之前講到比較兩個對象的時候,用的equals()方法比較得是兩個對象的地址是否相同呀,重寫的equals()方法才是比較內容呀?
而且想請教一下String Str1=new String("runoob");和String Str1="runoob";的區別在哪呀?new String("runoob")這里面的runoob是參數嗎?那String的有參構造方法是系統自帶的嗎?
2020-02-19
equals()方法不是比對地址,是字符串與指定對象進行比較