生活随笔
收集整理的這篇文章主要介紹了
java 双等号(==) 与equals方法的介绍和区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java 雙等號(==) 與equals方法的介紹和區別
1.基本數據類型與equals方法
== 用于比較基本數據類型時,比較的是值==用于比較引用數據類型時,比較的是地址equals方法在Object類中比較的也是地址,因為在低層也是使用==進行比較String類調用equals方法比較的內容,因為String類對equals方法進行了重寫,改為了比較字符串的內容
package com.qfedu.test2;
public class Person {private String name
;private String idCard
;public String getName() {return name
;}public void setName(String name
) {this.name
= name
;}public String getIdCard() {return idCard
;}public void setIdCard(String idCard
) {this.idCard
= idCard
;}public Person(String name
, String idCard
) {this.name
= name
;this.idCard
= idCard
;}public Person() {}public static void main(String[] args
) {Person p1
= new Person("張三","abcd");Person p2
= new Person("張三","abc");System.out
.println(p1
== p2
);System.out
.println(p1
.equals(p2
));System.out
.println("======================");String str1
= new String("abc");String str2
= new String("abc");System.out
.println(str1
== str2
);System.out
.println(str1
.equals(str2
));}}
2.String類中:
String 對象直接使用等號賦值,會將值存儲在方法區的字符串常量池中
String使用等號直接賦值時,在存放之前,會先檢查常量池中是否有相同的字符串內容,如果存在,直接使用已存在字符串內容,如果不存在,將以一個新的地址存放在常量中
注意:如果通過new對象進行賦值,每個對象都會是一個新的地址
public class Test1 {public static void main(String[] args
) {String str1
= "121";String str2
= "121";String str3
= new String("121");String str4
= new String("121");System.out
.println(str1
== str2
);System.out
.println(str3
== str4
);System.out
.println(str2
== str3
);}
}
3.整數包裝類中
數值包裝類,取值在byte(-128~127)之間,直接使用等號(=)賦值時,多個對象比較,結果為true,超過范圍為falsechar類型也遵循這個規則
public class Test1 {public static void main(String[] args
) {Integer i1
= 12;Integer i2
= 12;System.out
.println(i1
==i2
);Double d1
= 12D;Double d2
= 12D;System.out
.println(d1
== d2
);Long l1
= 123L;Long l2
= 123L;System.out
.println(l1
== l2
);}
}
總結
以上是生活随笔為你收集整理的java 双等号(==) 与equals方法的介绍和区别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。