日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java篇 之 ==与equals

發布時間:2025/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java篇 之 ==与equals 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

==是一個比較運算符,基本數據類型比較的是值,引用數據類型比較的是地址值。

"=="比"equals"運行速度快,因為"=="只是比較引用。

== 比較的是變量()內存中存放的對象的()內存地址,用來判斷兩個對象的地址是否相同,即是否是指相同一個對象。比較的是真正意義上的指針操作。

1、比較的是操作符兩端的操作數是否是同一個對象
2、兩邊的操作數必須是同一類型的(可以是父子類之間)才能編譯通過。
3比較的是地址,如果是具體的阿拉伯數字的比較,值相等則為true,如:
int a=10 long b=10L double c=10.0都是相同的(為true),因為他們都指向地址為10的堆。

equals

  equals用來比較的是兩個對象的內容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對象,如果沒有對該方法進行覆蓋的話,調用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。

  String是類類型,引用類型

  String s="abce"是一種非常特殊的形式,new 有本質的區別。它是java唯一不需要new 就可以產生對象的途徑。以String s="abce";形式賦值在java中叫直接量,它是在常量池中而不是象new一樣放在壓縮堆中。這種形式的字符串,在JVM內部發生字符串拘留,即當聲明這樣的一個字符串后,JVM會在常量池中先查找有有沒有一個值為"abcd"的對象,如果有,就會把它賦給當前引用.即原來那個引用和現在這個引用指點向了同一對象,如果沒有,則在常量池中新創建一個"abcd",下一次如果有String s1 = "abcd";又會將s1指向"abcd"這個對象,即以這形式聲明的字符串,只要值相等,任何多個引用都指向同一對象.
  而String s = new String("abcd");和其它任何對象一樣.每調用一次就產生一個對象,只要它們調用。

也可以這么理解: String str = "hello"; 先在內存中找是不是有"hello"這個對象,如果有,就讓str指向那個"hello".如果內存里沒有"hello",就創建一個新的對象保存"hello". String str=new String ("hello") 就是不管內存里是不是已經有"hello"這個對象,都新建一個對象保存"hello"

?

equals的源碼可以看出這里定義的equals與==是等效的,(Object類中的equals沒什么區別),不同的原因就在于有些類(像String、Integer等類)對equals進行了重寫,但是沒有對equals進行重寫的類就只能從Object類中繼承equals方法,其equals方法與==就也是等效的

轉載于:https://www.cnblogs.com/wskb/p/10811561.html

總結

以上是生活随笔為你收集整理的java篇 之 ==与equals的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。