1. 程式人生 > >Java中==和equals(),equalsIgnoreCase()

Java中==和equals(),equalsIgnoreCase()

關於==和equals,我們需要知道java中的資料型別,可分為兩類:

1.基本資料型別,也稱原始資料型別。byte,short,char,int,long,float,double,boolean 
他們之間的比較,應用雙等號(==),比較的是他們的值。 
2.複合資料型別(類) 
當他們用(==)進行比較的時候,比較的是他們在記憶體中的存放地址,所以,除非是同一個new出來的物件,他們的比較後的結果為true,否則比較後結果為false。
對於複合資料型別之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基於他們在記憶體中的存放位置的地址值的,因為Object的equals方法也是用雙等號(==)進行比較的,所以比較後的結果跟雙等號(==)的結果相同。

String a = new String("hello");
String b = "hello";
String c = "hello";
 
System.out.println("a==b: " + (a==b));  \\1
System.out.println("a.equals(b): " + a.equals(b));  \\2
System.out.println("b==c: " + (b==c));  \\3

1:    false
2:    true
3:    true

String b = "hello";和String c = "hello";對於這樣的型別的宣告方式(不是new出來的)串池把他們看做一個物件,所以池中只儲存一份,只是有a和b兩個引用罷了。
對於String只要用new關鍵字new出來的string,都是單獨的一個物件,而“==”號,他是用來比較物件的記憶體地址,所以只要用==號來比較string,只要不是自己比自己,那肯定是false。

JAVA中字串比較equals()和equalsIgnoreCase()的區別:
1.equals()函式:
    主要是區分“比較的字串” 大小寫和長度時候相同,比較的型別可以是Object型別。

2.equalsIgnoreCase()函式:
    比較的引數只能是字串,這裡只要字串的長度相等,字母的大小寫是忽略的。認為A-Z和a-z是一樣的。