Java基础笔记之数据类型
-
一、數據類型
(一)8種基本數據類型(內置數據類型\C#中為值類型)
- 字符長度:1byte = 8 bit;
- 布爾:可認為是 1byte (8 bit);
- 字符:
- char:2/16
- 整型:
- short: 2/16
- int: 4/32
- long: 16/64
- 浮點型:
- float: 8/32
- double: 16/64
(二)包裝類型(與基本數據類型一一對應,把基本數據類型封裝成對象的形式)
- 裝箱和拆箱:
- 裝箱:基本類型 -> 引用類型;
- 拆箱:引用類型 -> 基本類型;
-
基本數據類型與其包裝類的對應表:
-
注意:包裝類型屬于類;
-
理解:
- 自動裝箱和拆箱:
- Integer x = new Integer(3); //非自動裝箱寫法
Integer x = 2; // 自動裝箱寫法 int y = x; // 自動拆箱寫法
?
- 什么是自動裝箱和拆箱?:
答:
Java中基礎數據類型與它們的包裝類進行運算時,編譯器會自動幫我們進行轉換,轉換過程對程序員是透明的,這就是裝箱和拆箱。自動裝箱和拆箱精講(筆試面試重點)
自動裝箱過程是通過調用包裝器的valueOf方法實現的,而拆箱過程是通過調用包裝器的 xxxValue方法實現的。(xxx代表對應的基本> 數據類型)。
- 裝箱和自動裝箱的區別:
手動裝箱直接使用 new Integer(3) 方法,而自動裝箱則是使用 valueOf(int) 方法;
兩方法的區別:valueOf(int)方法種包含緩存池 和 new Integer(int), 代碼如下,對代碼的解讀如下:- 自動裝箱使用的方法:
valueOf(int):
public static Integer valueOf(int i) {if( i >= -128 && i <= IntegerCache.high)return IntegerCache.cache[i + 128];elsereturn new Integer(i);}?
代碼解讀:如果數值在[-128,127]之間,便返回指向IntegerCache.cache(就是緩存池)中已經存在的對象的引用,若緩存池中不存在這樣的對象就new一個新的Integer(x);如果不在[-128,127],則直接創建一個新的Integer對象。
- 題目1:判斷下列代碼的輸出結果 true/false;
?
解析:Integer i1 = 100;執行自動裝箱,此時緩存池種沒有這個對象,故new一個 Integer對象,并把它存到緩存池,當執行 Integer i2 = 100;時, 首先判斷其范圍i,在[-128,127]之間,故直接到緩存池中找看有沒有已存在數值相同的對象,有則直接返回該對象,正好,我們第一步剛存的i1就是這樣的對象,所以直接返回i1創建的對象給i2,所以,i1和i2其實是一個對象,所以 i1 == i2是正確的。而三四句,i3 和 i4都不在[-128,127]內,所以直接創建兩個新的 Integer對象,所以i3和i4是兩個不同的對象,i3自然不等于i4,不過 i3.equlas(i4)是對的。
轉載于:https://www.cnblogs.com/CherishTheYouth/p/CherishTheYouth_2019_0724.html
總結
以上是生活随笔為你收集整理的Java基础笔记之数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步构建大型网站架构 [转]
- 下一篇: JQuery DataTables Se