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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java integer最大值_五分钟学会java中的基础类型封装类

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java integer最大值_五分钟学会java中的基础类型封装类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在剛剛學習java的時候,老師不止一次的說過java是一種面向對象的語言,萬物皆對象。對于java中的基礎數據類型,由于為了符合java中面向對象的特點,同樣也有其封裝類。這篇文章對其有一個認識。

一、基本認識

其實在jdk1.5之前,在基礎數據類型與其封裝器之間的轉化必須手動進行,但是從jdk1.5之后,由于提供了自動裝箱的機制,因此我們不再手動進行了。

裝箱:基礎類型轉封裝類型。Integer a = 3
底層實現:Integer a = Integer.valueOf(3);
拆箱:封裝類型轉基礎類型。int b = a;
底層實現:int b = a.intValue();

既然封裝類能夠封裝基礎類型,那么能封裝的范圍是多少呢?

基本類型封裝器字節數最大值最小值byteByte1byte2^7 - 1-2^7shortShort2byte2^15 - 1-2^15charCharacter2byte2^16 - 10intInteger4byte2^31 - 1-2^31longLong8byte2^63 - 1-2^63floatFloat4byte3.4e+381.4e-45doubleDouble8byte1.8e+3084.9e-324booleanBoolean1byte/4byte/不明確--

我們對其進行了一個總結。不過我們應該注意到boolean類型沒有給出精確的定義,可能是一個字節也有可能是四個字節,這是為什么呢?java虛擬機規范中規定的是4個字節,但是不同的廠家虛擬機可能不同,所以可能不會按照規范來。

以上這張圖想必我們都不陌生,每一種基礎類型都有一個唯一的封裝類。而且也給出了字節數、最大值最小值等。下面我們就看一下其基本使用:

public

二、基礎類型與封裝類的區別

1、傳遞方式不同

基本類型是按值傳遞,而封裝類型是按引用傳遞的。int是基本類型,直接存放數值;Integer類會產生一個對象引用指向這個對象。

2、存儲位置不同

基本類型存儲在棧中,封裝類的引用存儲在棧中,而值是存在堆中。這樣看上去好像基礎封裝類多此一舉,而且基本類型的速度也確實會比封裝類更快。為什么快呢?這是因為封裝類涉及到了對象內存的分配和垃圾回收。但是基本類型直接拿起來就計算了。

三、源碼分析

在講解源碼之前我們先給出一個神奇的例子,請看下面的代碼:

public

第一種情況感覺和第二種情況一模一樣呀,為什么第二種是false呢?想要知道原因,我們就必須要深入到源碼中找尋答案。

public

也就是說,在合理表示范圍之內就直接拿出來一個舊的數據,如果不在表示范圍之內那就創建一個新的。但是對于源碼的了解不能僅限于此。我們還是按部就班的分析,下面我們以Integer封裝類為例。

1、參數

//最小值::-2147483648

2、方法

//方法1:將字符串參數解析為有符號的整數

3、緩存

上面支持給出了一些基本的使用方法,不過最核心的還是緩存范圍的實現。下面我們看一下:

private

上面這些代碼能看懂最好,看不懂我來描述一下大概意思:這是一個靜態內部類,類中定義一個靜態cache數組,這個靜態數組預先放了自己指定范圍內的數據,拆箱的時候首先判斷范圍然后從緩存數組中去抓取數據。就是這么一個簡單的過程。

四、使用場景

上面分析了這么多,最主要的還是如何使用,在什么地方使用。下面我們就總結幾個場景:

1、類型之間的轉換:

String

2、泛型中使用

List<>為原始類型,不指定元素類型時,會出現不安全的警告:

List is a raw type. References to generic type List<E> should be parameterized

大概意思就是:List的<>中應該指定清楚是那種類型,如Integer、String等。

3、強制類型轉換

4、集合中使用

public

這種情況下會出現空指針異常。

OK。今天的文章先到這里,如有問題還請批評指正。

總結

以上是生活随笔為你收集整理的java integer最大值_五分钟学会java中的基础类型封装类的全部內容,希望文章能夠幫你解決所遇到的問題。

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