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

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

JAVA中字符串的比較

代碼中:

String str1="hello";

String str2="imooc";

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

是可以輸出結果:str1等于str2:false

C中比較字符串一般會調用函數strcmp();,百度了JAVA中一般也會調用equals()方法,提及到字符串是對象類型和方法,不細究??吹胶竺嬖倩仡^來自我解答。

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

正在回答

6 回答

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

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

namnil 提問者

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

慕神9379745

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


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

代碼

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);
?? ?}
}

結果:false
????????? true

大概能意會==對于地址的比較了。

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

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

Jason333

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

快樂的時光

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

String str1= new String("hello");

String str2= new String("hello");

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


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

樓上正解

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

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

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

舉報

0/150
提交
取消

JAVA中字符串的比較

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

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

幫助反饋 APP下載

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

公眾號

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