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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题...

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:前言

相信大家都在面試中都被問到過一個問題,這個問題也是近年來面試官刁難人比較常見的一個問題,所以也被大家所熟知了,本質上也很簡單,但是也是非常基礎的一個題目。

Integer a = 100;

Integer b = 100;

System.out.println(a == b);

Integer a = 180;

Integer b = 180;

System.out.println(a == b);

復制代碼

題目也就是讓你回答一下上面的輸出情況,顯而易見第一個是true,第二個是false,這個大家應該都知道了

2:自動裝箱和拆箱

我們都知道!java的核心思想是:萬物皆對象,但是,實際上為了平時寫代碼的便利性,還是保留了8個基礎數據類型:byte, short, char, int, long, float, double 和 boolean

那么問題來了:下面這種情況怎么操作

//a是Integer對象類型,100是基礎int類型

Integer a = 100;

復制代碼

這個時候我們聰明的編譯器就會調用valueOf去做裝箱為對象

自動拆箱就正好反過來使用對象的intValue()方法區拆箱為基礎數據類型

3:解答上面的 == 不一樣的問題

那么我們在溫故一下上面那個問題好了,額外我再加一個干擾項

Integer a = 100;

Integer b = 100;

System.out.println(a == b); // -> true

Integer a = 180;

Integer b = 180;

System.out.println(a == b); // -> false

Integer a = new Integer(100);

Integer b = new Integer(100);

System.out.println(a == b); // -> false

復制代碼

所以我們要先理解==的意思,基礎類型==是比較值是否相等,對象類型是比較內存地址是否相同

那么我們結合Integer.valueOf()代碼就可以知道,我們在裝箱的時候會進行一次緩存判斷,在[-128,127]范圍內的時候,會取一個緩存對象,所以 a和b對象是同一個當然是true,第二個180超出范圍了,就會new一個新的Integer對象,內存地址肯定不一樣

那么最后一題,new Integer(100)實際上是直接自己new了對象,沒有用到裝箱,不過我想一般也沒人這么用吧···

4:總結

其實java中很多設計的小細節,小問題都包含了設計者們的智慧和心血,我們在看這些面試小問題的時候,應該仔細琢磨琢磨為什么這么設計,然后自己在實際的工作中也可以去運用這些巧妙的設計和知識!!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

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