數據類型
Java 基本類型共有八種惑淳,基本類型可以分為三類额港,字符類型 char,布爾類型 boolean 以及數值類型 byte歧焦、short移斩、int、long、float向瓷、double肠套。數值類型又可以分為整數類型 byte、short猖任、int你稚、long 和浮點數類型 float、double朱躺。JAVA 中的數值類型不存在無符號的刁赖,它們的取值范圍是固定的,不會隨著機器硬件環(huán)境或者操作系統(tǒng)的改變而改變长搀。實際上乾闰,JAVA 中還存在另外一種基本類型 void,它也有對應的包裝類 java.lang.Void盈滴,不過我們無法直接對它們進行操作。8 種類型表示范圍如下:
- byte:8 位轿钠,最大存儲數據量是 255巢钓,存放的數據范圍是 - 128~127 之間。
- short:16 位疗垛,最大數據存儲量是 65536症汹,數據范圍是 - 32768~32767 之間。
- int:32 位贷腕,最大數據存儲容量是 2 的 32 次方減 1背镇,數據范圍是負的 2 的 31 次方到正的 2 的 31 次方減 1。
- long:64 位泽裳,最大數據存儲容量是 2 的 64 次方減 1瞒斩,數據范圍為負的 2 的 63 次方到正的 2 的 63 次方減 1。
- float:32 位涮总,數據范圍在 3.4e-45~1.4e38胸囱,直接賦值時必須在數字后加上 f 或 F。
- double:64 位瀑梗,數據范圍在 4.9e-324~1.8e308烹笔,賦值時可以加 d 或 D 也可以不加。
- boolean:只有 true 和 false 兩個取值抛丽。
- char:16 位谤职,存儲 Unicode 碼,用單引號賦值亿鲜。
Java 決定了每種簡單類型的大小允蜈。這些大小并不隨著機器結構的變化而變化。這種大小的不可更改正是 Java 程序具有很強移植能力的原因之一。下表列出了 Java 中定義的簡單類型陷寝、占用二進制位數及對應的封裝器類锅很。
對于數值類型的基本類型的取值范圍,我們無需強制去記憶凤跑,因為它們的值都已經以常量的形式定義在對應的包裝類中了爆安。如:
- 基本類型 byte 二進制位數:Byte.SIZE 最小值:Byte.MIN_VALUE 最大值:Byte.MAX_VALUE
- 基本類型 short 二進制位數:Short.SIZE 最小值:Short.MIN_VALUE 最大值:Short.MAX_VALUE
- 基本類型 char 二進制位數:Character.SIZE 最小值:Character.MIN_VALUE - 最大值:Character.MAX_VALUE
- 基本類型 double 二進制位數:Double.SIZE 最小值:Double.MIN_VALUE 最大值:Double.MAX_VALUE
注意:float、double 兩種類型的最小值與 Float.MIN_VALUE仔引、 Double.MIN_VALUE 的值并不相同扔仓,實際上 Float.MIN_VALUE 和 Double.MIN_VALUE 分別指的是 float 和 double 類型所能表示的最小正數。也就是說存在這樣一種情況咖耘,0 到 ±Float.MIN_VALUE 之間的值 float 類型無法表示翘簇,0 到 ±Double.MIN_VALUE 之間的值 double 類型無法表示。這并沒有什么好奇怪的儿倒,因為這些范圍內的數值超出了它們的精度范圍版保。 Float 和 Double 的最小值和最大值都是以科學記數法的形式輸出的,結尾的”E + 數字” 表示 E 之前的數字要乘以 10 的多少倍夫否。比如 3.14E3 就是 3.14×1000=3140彻犁,3.14E-3 就是 3.14/1000=0.00314。 Java 基本類型存儲在棧中凰慈,因此它們的存取速度要快于存儲在堆中的對應包裝類的實例對象汞幢。從 Java5.0(1.5)開始,JAVA 虛擬機(Java Virtual Machine)可以完成基本類型和它們對應包裝類之間的自動轉換微谓。因此我們在賦值森篷、參數傳遞以及數學運算的時候像使用基本類型一樣使用它們的包裝類,但這并不意味著你可以通過基本類型調用它們的包裝類才具有的方法豺型。另外仲智,所有基本類型(包括 void)的包裝類都使用了 final 修飾,因此我們無法繼承它們擴展新的類姻氨,也無法重寫它們的任何方法坎藐。 基本類型的優(yōu)勢:數據存儲相對簡單,運算效率比較高 包裝類的優(yōu)勢:有的容易哼绑,比如集合的元素必須是對象類型岩馍,滿足了 java 一切皆是對象的思想