單、雙緩衝區學習筆記
阿新 • • 發佈:2022-03-05
-
千古不變的:==
-
-
比較的就是記憶體地址;
-
-
不確定的equals:
-
討論equals,要帶上"類";
-
其實,Java中的equal作為一個方法,我們是不能脫離了”類“而單獨討論它的;
-
那麼,說到底,equals方法來自Object類,原始碼如下:
//Object類中的 equals方法
public boolean equals(){
return this ==obj;
}
/**
總結:
1,從原始碼中我們看到了equals和==深遠的緣分;
2,Object類中的equals方法與==功能是一模一樣的:比較2個物件是否是同一個物件;
3,只是,作為Object子類的String類為了符合自身的特質,重寫了Object類中的equals方法;
4,重寫後的效果是:如果2個String物件的值相同,那麼呼叫equals方法返回true,否則返回false;
為什麼要這麼做:
1,這是很有道理的,面向物件的思維方式其根源就是模擬現實生活的邏輯;
2,在現實生活中,我們認為屬性完全相同的2個物件就應該是同一個物件(比如String類的值);
3,如果不這樣,只用==就好了,為什麼還要用equals?
*/ -
程式碼案例:== 和 equals
public class Test {
public static void main(String[] args) {
String str1="hello";
String str2=new String ("hello");
String str3=new String ("hello");
String str4=str3;
String str5=str1;
System.out.println(str1==str2);//false
System.out.println(str1==str3);//false
System.out.println(str2==str3);//false
System.out.println(str1==str4);//false
System.out.println(str1==str5);//true
System.out.println("----------------");
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
System.out.println(str2.equals(str3));//true
System.out.println(str1.equals(str4));//true
System.out.println(str1.equals(str5));//true
System.out.println(str2.equals(str3));//true
System.out.println(str3.equals(str4));//true
}
}
-