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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

浅谈Java中equals()和==的区别

發布時間:2024/9/20 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈Java中equals()和==的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.先來說說Java的基本數據類型和引用類型

八大基本數據類型:Byte,short,int,long,double,folat,boolean,char,其中占一個字節的是byte,short和char占兩個字節,int,float占四個字節,double和long占8個字節,boolean只有true和false,這八種數據變量中直接存儲值

八大基本數據類型對應著各自的封裝類型,提供了更多的方法,且不進行初始化時值默認為空(基本數據類型必須初始化)

像String類型屬于引用類型,變量中存儲的是地址,對應的地址存儲數據

二.equals和==

equals是判斷兩個變量或者實例指向同一個內存空間的值是不是相同

而==是判斷兩個變量或者實例是不是指向同一個內存空間

舉個通俗的例子來說,==是判斷兩個人是不是住在同一個地址,而equals是判斷同一個地址里住的人是不是同一個

比如下面的代碼

public class EqualsTest {
? ? public static void main(String[] args) {
? ? ? ? // TODO Auto-generated method stub
? ? ? ? Integer aaa=new Integer(5);
? ? ? ? Integer bbb=new Integer(5);
? ? ? ??
? ? ? ? int a=10;
? ? ? ? int b=10;
? ? ? ? String str1=new String("justice");
? ? ? ? String str2=new String("justice");
? ? ? ? String str3;
? ? ? ? str3=str1;
? ? ? ??
? ? ? ??
? ? ? ? System.out.println(aaa==bbb);
? ? ? ? System.out.println(aaa.equals(bbb));
? ? ? ? System.out.println(a==b);
? ? ? ??
? ? ? ? System.out.println(str1==str2);
? ? ? ? System.out.println(str1.equals(str2));
? ? ? ??
? ? ? ??
? ? ? ? System.out.println(str1==str3);
? ? ? ? System.out.println(str1.equals(str3));
? ? }

}
?

對應結果如下

aaa和bbb都是Integer封裝類型,是不同的對象,變量存儲地址, 所以==結果為false,equals為true

a和b都是基本數據類型,變量存儲值,所以==為true,基本數據類型無equals方法(沒有意義)

str1和str2都是String類型,屬于引用類型,變量存儲地址,所以==為false,equals為true

創建str3的時候,str3指向了str1,所以str1和str3的指向同一個地址,存儲的數據自然相同,所以均為true

三.接下來看個有意思的事情(有點神奇)

看圖思考一下結果是什么???

結果。。。。。。。。。。。。。。。。。。。。。。。。

說下原因,之所以會有疑問,是大家覺得a和c是不同的對象,所以地址不同,所以結果為false才對,但是定義一個Integer變量時,會默認進行Integer.valueOf(a)操作,看一下這個方法的源碼(按住ctrl+鼠標左鍵進入該方法),

high的值為127,low的值為-128,當進行這個方法時如果值在-128-127之間,返回的值也就是地址是相同的,所以a和c的地址相同,a==c自然為true
————————————————
版權聲明:本文為CSDN博主「不劃水的易水寒」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38162448/article/details/81611894

總結

以上是生活随笔為你收集整理的浅谈Java中equals()和==的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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