equals與== 的區別 及 String,StringBuffer,StringBuilder的區別
一:“equals”和“==”的區別
例子:
String s1 = "aaa";
String s2 = "aaa";
String s3 = New String("aaa");
判斷
s1.equals(s2)
s1 == s2
s1.equals(s3)
s1 == s3
結果
true
true
true
false
總結:
“equals”比較的是兩個獨立對象的內容是否相等。
它將繼承Object類的equals方法,Object類的equals方法的實現代碼如下:
boolean equals(Object o){
return this==o;
}
“==” 比較的是兩個對象(地址)的引用是否相同。
專門用來比較兩個變量的值是否相等,也就是用於比較變量所對應的內存中所存儲的數值是否相同,
要比較兩個基本類型的數據或兩個引用變量是否相當,只能用== 。
所以 字符串的比較基本都是使用equals方法
二:StringBuffer與StringBuilder
它們都是字符串變量,都是可改變對象,對字符串操作實際上是對對象進行操作,
與String進行創建字符串不一樣。
StringBuffer是線程安全的;StringBuilder是非線程安全的
執行速度:StringBuilder > StringBuffer
String與它們的區別(怎麼用?)
1.如果要操作少量的數據用 = String
2.單線程操作字符串緩衝區 下操作大量數據 = StringBuilder
3.多線程操作字符串緩衝區 下操作大量數據 = StringBuffer
例子:
String s1 = "aaa";
String s2 = "aaa";
String s3 = New String("aaa");
判斷
s1.equals(s2)
s1 == s2
s1.equals(s3)
s1 == s3
結果
true
true
true
false
總結:
“equals”比較的是兩個獨立對象的內容是否相等。
它將繼承Object類的equals方法,Object類的equals方法的實現代碼如下:
boolean equals(Object o){
return this==o;
}
“==” 比較的是兩個對象(地址)的引用是否相同。
專門用來比較兩個變量的值是否相等,也就是用於比較變量所對應的內存中所存儲的數值是否相同,
要比較兩個基本類型的數據或兩個引用變量是否相當,只能用== 。
所以 字符串的比較基本都是使用equals方法
二:StringBuffer與StringBuilder
它們都是字符串變量,都是可改變對象,對字符串操作實際上是對對象進行操作,
與String進行創建字符串不一樣。
StringBuffer是線程安全的;StringBuilder是非線程安全的
執行速度:StringBuilder > StringBuffer
String與它們的區別(怎麼用?)
1.如果要操作少量的數據用 = String
2.單線程操作字符串緩衝區 下操作大量數據 = StringBuilder
3.多線程操作字符串緩衝區 下操作大量數據 = StringBuffer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.