java 的基本數據類型及轉換

數據類型精度: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
相關文章
相關標籤/搜索