數據類型精度:java
byte 8 位
short 16 位
int 32 位
long 64 位
float 32 位
double 64 位
char 16 位
boolean 佔幾位要看 jvm 的具體實現, 雖然 Java 虛擬機定義了 boolean 這種數據類型,可是隻對它提供了很是有限的支持。在
Java 虛擬機中沒有任何供 boolean 值專用的字節碼指令,在 Java 語言之中涉及到 boolean
類型值的運算,在編譯以後都使用 Java 虛擬機中的 int 數據類型來代替。
public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("基本類型:byte 二進制位數:" + Byte.SIZE); System.out.println("包裝類:java.lang.Byte"); System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本類型:short 二進制位數:" + Short.SIZE); System.out.println("包裝類:java.lang.Short"); System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本類型:int 二進制位數:" + Integer.SIZE); System.out.println("包裝類:java.lang.Integer"); System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本類型:long 二進制位數:" + Long.SIZE); System.out.println("包裝類:java.lang.Long"); System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); System.out.println(); // float System.out.println("基本類型:float 二進制位數:" + Float.SIZE); System.out.println("包裝類:java.lang.Float"); System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本類型:double 二進制位數:" + Double.SIZE); System.out.println("包裝類:java.lang.Double"); System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); System.out.println(); // char System.out.println("基本類型:char 二進制位數:" + Character.SIZE); System.out.println("包裝類:java.lang.Character"); // 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制檯 System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE); // 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制檯 System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE); } }
【運行結果】jvm
基本類型:byte 二進制位數:8code
包裝類:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本類型:short 二進制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本類型:int 二進制位數:32
包裝類:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本類型:long 二進制位數:64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
基本類型:float 二進制位數:32
包裝類:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
基本類型:double 二進制位數:64
包裝類:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
基本類型:char 二進制位數:16
包裝類:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535對象
一、boolean 型不能進行類型轉換,布爾運算運算元和三元運算的第一個運算元的數據類型都必須是boolean型
二、低精度類型能夠賦給高精度類型變量並自動轉換爲高精度
三、高精度類型賦給低精度類型須要使用強制類型轉換
四、char 與 byte short 之間的類型轉換須要經過強制類型轉換,char 能夠直接轉 int long float double
五、char byte short int long float double 能夠直接運算,自動發生類型轉換, 轉換順序由低精度轉向高精度
六、高精度轉低精度的方式是截取二進制地位,直接扔掉高位,
好比 int 100927 轉 short,100927 二進制有17位:11000101000111111 ,截取低位的16位,1000101000111111 的值是 -30145(最高位爲1表示負數)blog
七、隱含的強制類型轉換:整數的默認類型是 intunicode
八、基本數據類型與字符串執行 + 操做時,基本數據類型被裝箱並調用裝箱後對象的 toString() 方法獲得字符串,而後進行字符串拼接字符串
九、基本數據類型的變量並不會自動擁有其裝箱後的類型的方法,須要進行強制轉換,例如, int 類型和 Integer 類型不是同一個類型,int 類型變量想調用 Integer 類型的方法須要把 int 轉換成 Integer虛擬機
int i1 = 100927; short s1 = (short)i1; char c1 = (char)i1; System.out.println(s1); //-30145,二進制 1000101000111111 System.out.println(c1); //訿,二進制1000101000111111, unicode 35391
int a = 123; String b = "abc"; boolean c = false; Boolean c2 = (Boolean)c; String d = a+b+c; System.out.println(d);//123abcfalse System.out.println(c2.toString());//false