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是一樣的。