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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

JAVA中字符串的比較

代碼中:

String str1="hello";

String str2="imooc";

System.out.println("str1等于str2:" + (str1==str2));

是可以輸出結(jié)果:str1等于str2:false

C中比較字符串一般會(huì)調(diào)用函數(shù)strcmp();,百度了JAVA中一般也會(huì)調(diào)用equals()方法,提及到字符串是對(duì)象類型和方法,不細(xì)究。看到后面再回頭來自我解答。

而代碼中==運(yùn)行成功,是可以這樣比較還是IDE將就著執(zhí)行成功了,回頭自我解答。

正在回答

6 回答

可以這樣比較,但字符串比較用==表示的是地址的比較,指向同一對(duì)象才返回true,而equals是比較內(nèi)容的

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

namnil 提問者

懂了~
2015-12-09 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕神9379745

何為地址的比較?比如"hello"和"imooc"
2016-07-23 回復(fù) 有任何疑惑可以回復(fù)我~
==和equals區(qū)別
(1)==
?第一,指的是基本數(shù)據(jù)類型的數(shù)值大小的比較?例如:int?a=3,b=3;則a==b;
?第二,指的是比較對(duì)象引用(new出來對(duì)象或者是已經(jīng)存在對(duì)象的首地址)是否相等?例如:
????String?a?=?"hello";
????String?b?=?"world";
????a指向的是內(nèi)存存放字符串“hello”的首地址,b指向的是內(nèi)存存放字符串“world”的首地址。因?yàn)檫@兩個(gè)??字符串對(duì)象不同,故首地址不同。故a==b為false。
(2)equals
?它的本意是指兩對(duì)象引用是否相等,但是String類重寫了它的equals方法(源碼里有)
?1.if(object==this)?return?true;
?2.if(object?instanceof?String)?比較兩個(gè)字符串字符是否相等,相同返回true,不相同返回false
?例如?String?a?=?"nice";
?????String?b?=?"nice";
?????String?c?=?new?String("nice");
?????String?d?=?new?String("nice");
?????表達(dá)式?a==b?a和b指的是“nice”同一對(duì)象,故地址即引用相等。故為true
?????表達(dá)式?a==c?c是重新new出來的對(duì)象?故a和c指的是不同的對(duì)象?故為false
?????表達(dá)式?a.equals(b)?將a,b帶入equals方法。上面已經(jīng)得出a==b為false?故不執(zhí)行第一個(gè)if條件
?????轉(zhuǎn)而進(jìn)行第二個(gè)條件比較字符串的字符。都是“nice",故為true
?????表達(dá)式?a.equals(c)?同理也是比較字符串的字符都是‘nice’,故為true


0 回復(fù) 有任何疑惑可以回復(fù)我~

代碼

public class helloworld{
?? ?public static void main(String[] args){?? ??? ?
?? ??? ?String str1= new String("hello");
?? ??? ?String str2= new String("hello");
?? ??? ?System.out.println(str1==str2);
?? ??? ?String str3="hello";
?? ??? ?String str4="hello";
?? ??? ?System.out.println(str3==str4);
?? ?}
}

結(jié)果:false
????????? true

大概能意會(huì)==對(duì)于地址的比較了。

但如果直接定義str而不是用new,不同的字符串地址竟然是一樣的。對(duì)于new的用法還是要回頭來看。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Jason333

直接定義str, str3會(huì)創(chuàng)建一個(gè)hello字符串并放到字符串常量池,str4會(huì)先在字符串常量池里找,找到直接取出來,所以str3和str4是同一個(gè)地址,new的話是在堆內(nèi)存創(chuàng)建了一個(gè)對(duì)象,肯定是不同的地址
2015-12-09 回復(fù) 有任何疑惑可以回復(fù)我~
#2

快樂的時(shí)光

可以添加比較條件str1==str3
2015-12-09 回復(fù) 有任何疑惑可以回復(fù)我~

String str1= new String("hello");

String str2= new String("hello");

用== 和 equals 分別試試就知道了


0 回復(fù) 有任何疑惑可以回復(fù)我~

樓上正解

0 回復(fù) 有任何疑惑可以回復(fù)我~

有這樣的精神很好,有問題后面大家可以一起討論

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

JAVA中字符串的比較

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

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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