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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java类型比较_java 基本数据类型 ==和equals()比较

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java类型比较_java 基本数据类型 ==和equals()比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.基本類型的存儲

Java 8種基本類型都是存儲在堆棧中,例:int i = 1;String str = "hello world";也是存儲在堆棧中。

new基本類型的包裝器類型和new String()都是存儲在堆內存中。例Integer i = new Integer(1);String str = new String("hello world");

2.==和equels()比較的含義

1.==是比較對象的內存地址,基本類型就是比較值

2.java對象的equals()方法都是繼承Object.equals(Object o)方法的。比較的內容其實就是使用了“==”比較對象內存地址。

public boolean equals(Object obj) {

return (this == obj);

}

java8種基本類型包裝器類和String類都重寫了equals()方法,先比較類型在比較值,例如Long.equals(Object obj)

public boolean equals(Object obj) {

if (obj instanceof Long) {

return value == ((Long)obj).longValue();

}

return false;

}

3.實例==和equels()比較

int int3 = 3;

Integer integer3 = new Integer(3);

Integer integer3_2 = new Integer(3);

Integer integer3_3 = 3;

Integer integer3_4 = 3;

Integer integer321 = 321;

Integer integer321_2 = 321;

int int321 = 321;

int int321_2 = 321;

Long long3 = 3l;

System.out.println(integer3==integer3_2); //false #1

System.out.println(integer3_3==integer3_4); //true #2

System.out.println(integer3==int3); //true #3

System.out.println(integer3_3.equals(integer3_4)); //true #4

System.out.println(integer321==integer321_2); //false #5

System.out.println(int321==int321_2); //true #6

System.out.println(long3==int3); //true #7

System.out.println(long3.equals(int3)); //false #8

#1? new兩個Integer對象,分配內存在堆中,兩個地址塊不同

#2 Integer integer3_3 = 3;java編譯后的代碼為Integer integer3_3 = Integer.valueOf(3);

查看java Integer.valueOf(int)源碼public static Integer valueOf(int i) {

assert IntegerCache.high >= 127;

if (i >= IntegerCache.low && i <= IntegerCache.high)

return IntegerCache.cache[i + (-IntegerCache.low)];

return new Integer(i);

}原來-128<=int<=127的值java棧中有緩存都指向同一個地址,不在這個范圍內的int值都是new一個新的Integer,所以#2為true,#5為false

#3 基礎類型和包裝類運算時,包裝類會拆包,所以就是兩個值運算

#7 btye,short,int,long運算時,都會向上轉型到同一類型運算

#8 equals()比較是先比較類型在比較值,類型不一樣所以為false

分享到:

2014-06-14 21:28

瀏覽 2176

評論

總結

以上是生活随笔為你收集整理的java类型比较_java 基本数据类型 ==和equals()比较的全部內容,希望文章能夠幫你解決所遇到的問題。

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