3. Java 基本資料型別
阿新 • • 發佈:2020-08-07
Java 是一種 強型別 語言,要求變數的使用嚴格規定,所有變數的使用都必須先定義
3.1 基本型別(8)
基本型別分為:數值型別:整型、浮點型、字元型;布林型
- 整型
- byte (1個位元組)
- short (2個位元組)
- int (4個位元組)
- long (8個位元組)
- 浮點型
- float (4個位元組)
- double (8個位元組)
- 字元型
- char (2個位元組)
- 布林型
- boolean:true/false (1位)
基本型別的包裝類:
Byte、Short、Integer、Long、Float、Double、Character、Boolean
3.2 引用型別
- 類
- 介面
- 陣列
3.3 常見面試題
3.3.1 自動拆箱和裝箱
裝箱:將基本資料型別轉換為對應的引用型別;呼叫 valueOf() 方法
拆箱:將引用型別轉換為對應的基本資料型別;呼叫 xxxValue() 方法
相關博文:https://www.cnblogs.com/dolphin0520/p/3780005.html
例子:
Integer i1 = 100; Integer i2 = 100; Integer i3 = 200; Integer i4 = 200; System.out.println(i1 == i2);// true System.out.println(i3 == i4);// false 解析: Integer.valueOf(); 方法 會根據數值判斷,[-128,127] 之間會查詢相同值得引用地址,否則new 一個新的物件 public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } ========================================================================================================= Double d1 = 100.0; Double d2 = 100.0; Double d3 = 200.0; Double d4 = 200.0; System.out.println(d1 == d2);// false System.out.println(d3 == d4);// false 解析: double.valueOf 是直接建立新物件 public static Double valueOf(double d) { return new Double(d); } ========================================================================================================= 布林值:定義了兩個靜態變數;此會在初始化載入的時候就載入完。 public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); }
因此:
整數型 Byte、Short、Integer、Long、Character 、Boolean都是同類模式;常量池技術
- Byte、Short、Integer、Long 快取資料:[-128, 127]
- Character : [0, 127]
- Boolean : [True Flase]
- ==》 以上超出對應的範圍即會建立新的物件。
浮點型 Double 、Float 直接new.
- 因為浮點數沒有固定範圍大小的數值
Integer i = new Integer(***); 和 Integer i = *; 的區別
- 第一種不會觸發自動裝箱;第二種會
- 某種程度上來說,第二種的執行效率要高於第一種;
- 因為自動裝箱的時候:會判斷區間值,如在區間種則無需new.
進位制
-
整數進位制首位
- 二進位制:0b
- 八進位制:0
- 十進位制:
- 十六進位制:0x
-
浮點數
- float:有限、離散、舍入、大約、接近但不等於
- 最好完全不要使用浮點數進行比較
- 銀行業務、金錢業務:使用 BigDecimal 數學工具類
-
字元型
- 所有的字元本身還是數字
-
轉義字元
- \t 製表符
- \n 換行
- ...
-
布林型
- if(flag==true){} 與 if(flag) 是一樣的
3.4 型別轉換
-
強制轉換:(型別)變數名 ; 由高到低
int i = 10; byte a = (byte) i;
-
自行轉換:由低到高
-
運算過程中不同型別的資料需轉換為同一型別
-
注意事項:
- 不能對布林型別進行轉換
- 高容量轉換為低容量時需強制轉換
- 強制轉換存在記憶體溢位的問題
- 不能把物件型別轉換為不相干的型別