Java中 equals() 方法和 == 的區別
在 基本資料型別 中:
如 byte,short,char,int,long,double,boolean
用 == 和 equals() 方法進行比較的時候比較的都是值
在 複合資料型別 中:
如:String,陣列,一般的類,介面等
用==操作來進行比較時,比較的是它們在記憶體中的地址
java在Object類中定義了 equals() 方法,用來比較物件的地址,但是在一些類如 String,Integer,Date 等類中重寫了 equals() 方法用來比較他們的值
小栗子:
public class Test{
public static void main(String args[]){
String str1 = "Test";
String str2 = "Test";
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
}
}
輸出結果:
true
true
做稍許改動我們會發現
public class Test{
public static void main(String[] args) {
String str1 = "Test";
String str2 = new String("Test");
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
}
}
輸出結果:
false
true
這是為什麼呢?
為大家介紹java中的字串緩衝池:
程式在執行時會建立一個字串緩衝池,在第一個程式的字串建立方式中,str1和str2都等於"Test",程式會首先在這個字串緩衝池中尋找有相同值的物件,str1那條語句先被執行,str2在後來建立的時候,會直接指向str1的地址,所以str1== str2這個表示式才會返回true;
但在第二種建立方式中,因為使用了new關鍵字,所以會在空間中為str2分配一個新的地址,所以在str1==str2就會返回false。
相關文章
- java 中equals和==的區別Java
- ==和equals方法的區別
- 【Java】equals 和 == 的區別Java
- Java中(==)與equals的區別Java
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- 深入探究Java中equals()和==的區別是什麼Java
- Java基礎- ==和equals和hashCode的區別Java
- Java基礎-- ==號與equals()方法的區別Java
- Java培訓教程:”==“和 equals 方法究竟有什麼區別?Java
- Java技術分享:”==“和 equals 方法究竟有什麼區別?Java
- java基本型別和包裝型別的“==”和equals()方法Java型別
- Java經典面試題: == 和 equals( )的區別Java面試題
- javaSE中的==和equals的聯絡與區別Java
- Java中equals與==的本質區別是什麼?Java
- hashCode()和equals()的區別?(skycto JEEditor)
- 深入理解equals和==的區別
- 【ASP.net】Equals 和 == 的區別ASP.NET
- Java面試題 equals()與"=="的區別?Java面試題
- Java之String的equals與contentEquals區別Java
- 關於Java中的equals方法Java
- Java常見知識點彙總(⑫)——==和equals的區別Java
- 搞懂 Java equals 和 hashCode 方法Java
- 你真的知道 == 和 equals 的區別嗎?
- 你真的懂 == 和 equals 的區別嗎?
- 第四章 ==和equals()的區別
- Java基礎系列-equals方法和hashCode方法Java
- 簡單介紹java中的equals()方法Java
- equals與==的區別(詳解)
- Java中equals和==比的是什麼Java
- java中==和equlas區別Java
- Java中Vector和ArrayList的區別Java
- laravel中delete()方法和destroy()方法的區別Laraveldelete
- String類中的equals方法與Object類中的equals方法的不同點Object
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- ==和equals方法的比較
- String的equals和hashCode方法
- Python中函式和方法的區別Python函式
- activity和fragment中startactivityforresult方法的區別Fragment