JAVA Integer類型自加實(shí)例詳解
JAVA語(yǔ)言中有一些基本數(shù)據(jù)類型,比如int,long,double...
這些數(shù)據(jù)類型可以支持一些運(yùn)算操作符,其中對(duì)于int類型的++/--操作符
Integer類型是一個(gè)對(duì)象類型,居然也可以支持++運(yùn)算,那么問(wèn)題來(lái)了
一個(gè)Integer對(duì)象執(zhí)行++操作之后還是原來(lái)那個(gè)對(duì)象嗎?
測(cè)試代碼
public class IntegerTest { @Test public void test() { Integer a = 1; System.out.println(System.identityHashCode(a)); a++; System.out.println(System.identityHashCode(a)); } }
輸出
105704967
392292416
對(duì)象的內(nèi)存地址不一致,說(shuō)明Integer對(duì)象執(zhí)行++操作之后是返回一個(gè)新的Integer對(duì)象
可以通過(guò)查看匯編代碼分析一下原因
簡(jiǎn)化代碼
public class IntegerTest { public void test() { Integer a = 1; a++; } }
上述代碼的字節(jié)碼
Compiled from "IntegerTest.java" public class com.migoo.common.IntegerTest { public com.migoo.common.IntegerTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public void test(); Code: 0: iconst_1 1: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 4: astore_1 5: aload_1 6: astore_2 7: aload_1 8: invokevirtual #3 // Method java/lang/Integer.intValue:()I 11: iconst_1 12: iadd 13: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 16: dup 17: astore_1 18: astore_3 19: aload_2 20: pop 21: return }
關(guān)于Java字節(jié)碼的介紹可以看一下這篇博客
我們主要關(guān)注8、13兩行,底層使用了java/lang/Integer.intValue拆箱,然后自加,再通過(guò)java/lang/Integer.valueOf裝箱,拆箱裝箱操作之后變量a 所指向的對(duì)象就不是原來(lái)的對(duì)象了
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
集合框架及背后的數(shù)據(jù)結(jié)構(gòu)
本文主要介紹了Java的集合框架Java?Collection?Framework,接口interface以及背后的數(shù)據(jù)結(jié)構(gòu),感興趣的同學(xué)可以閱讀參考2023-03-03Java亂碼問(wèn)題解決方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
開(kāi)發(fā)java應(yīng)用出現(xiàn)亂碼是很常見(jiàn)的,畢竟現(xiàn)在unicode的使用還不是很廣泛,下面給大家分享Java亂碼問(wèn)題解決方法,感興趣的朋友一起看看吧2017-07-07輕松學(xué)會(huì)使用JavaMail?API發(fā)送郵件
想要輕松學(xué)會(huì)使用JavaMail?API發(fā)送郵件嗎?本指南將帶你快速掌握這一技能,讓你能夠輕松發(fā)送電子郵件,無(wú)論是個(gè)人還是工作需求,跟著我們的步驟,很快你就可以在Java應(yīng)用程序中自如地處理郵件通信了!2023-12-12Netty搭建WebSocket服務(wù)器實(shí)戰(zhàn)教程
這篇文章主要介紹了Netty搭建WebSocket服務(wù)器實(shí)戰(zhàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03SpringSecurity?表單登錄的實(shí)現(xiàn)
本文主要介紹了SpringSecurity?表單登錄的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12