第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

equals()方法的問題

之前做過比較兩個String類型的值時

比如:

String str1="你好";

String str2="你"+"好";

String str3="你";

String str4="好";

String str5=str3+str4;

System.out.println(str1.equals(str2));

System.out.println(str1.equals(str5));

為什么這兩個句子返回的都是true啊,不是說好的比較地址的嗎?有疑惑啊

正在回答

2 回答

子木李 說得對,樓主還可以嘗試去建立一個類的兩個實例,內(nèi)部變量完全一樣,但是你用equals去比較時,返回的是false,這就會驗證你理解中的兩個對象使用 equals 是進行地址比較;但是你會發(fā)現(xiàn)兩個String,哪怕是通過new String()得到的(理論上是兩個對象),你會發(fā)現(xiàn)執(zhí)行 equals 操作會獲得 true, 這是因為java字符池機制的作用,關(guān)于這個可以推薦樓主看下 “JAVA 字符池”,這個應(yīng)該可以幫到樓主;

另外補充一些我知道的相關(guān)的一知半解:String對象是不可改變的,比如說String str1 = new String("hello"); 然后你讓 str1 = "java"; 你會發(fā)現(xiàn)str1只是改變了自身引用,對其之前的內(nèi)容 “hello” 串并不會有改變;


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

string類型的equals方法的規(guī)則是這樣的:如果兩個對象的類型一致,并且內(nèi)容一致,則返回true,樓主理解的比較地址也是正確的,不過java的String類的機制是:對于String實例,運行時狀態(tài)會盡可能地確保任意兩個具有相同字符信息的String字面值指向同一個內(nèi)部對象,即是如果字面值一樣,那么它們其實是同一個地址,所以,返回的是true,str1、str2、str5都是“你好”

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

子木李

補充一點,因為樓主是使用""來創(chuàng)造一個字符串變量的,所以當字面量一樣,雖然是不同的變量,但指向的是同一個地址,如果是使用new String來創(chuàng)建字符串變量,則即使字面量一樣,地址也是不一樣的,這個時候equals方法,返回的依然是true,原理之前說過了,而 == 則返回是false,因為地址不一樣
2015-10-22 回復 有任何疑惑可以回復我~
#2

羽丶 回復 子木李

Dog dog1=new Dog(); dog1.age="15"; Dog dog2=new Dog(); dog2.age="15"; 然后使用 dog1.equals(dog2) ,返回值是 false ,這兩個對象類型一致,內(nèi)容也一致,為什么返回false ? 想不明白,想請教一下。
2015-11-10 回復 有任何疑惑可以回復我~
#3

子木李 回復 羽丶

dog1和dog2是兩個不同的對象,他們的內(nèi)容是不一致的,內(nèi)容是指針,指向存儲這兩個對象的內(nèi)存區(qū)域。詳細一點說,就是,equals是適合string用的方法,而不是其他的對象,如果是其他對象類型的話,那么它會首先調(diào)用對象的toString方法,將對象轉(zhuǎn)為字符串,而你的dog對象轉(zhuǎn)為字符串的話,是Dog@后面跟內(nèi)存地址,所以,是不一樣的,如果樓主想使用equals的話,那么,就在dog類中重寫equals方法,然后判斷age是否相等。大概就是這個意思
2015-11-10 回復 有任何疑惑可以回復我~
#4

羽丶 回復 子木李

恩,謝了!
2015-11-10 回復 有任何疑惑可以回復我~
查看1條回復

舉報

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

課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙

進入課程

equals()方法的問題

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號