Java數據類型轉換

數據類型:基本數據類型及引用數據類型
基本數據類型:byte、short、int、long、float、double、char及布爾類型(boolean)

在Java語言中除布爾(boolean)類型外,其它數據類型均可進行相互轉換

分類

自動類型轉換、強制類型轉換

1 自動類型轉換

變量在做計算時,可能會出現溢出的情況,Java採用自動類型轉換的方式處理:佔用內存小空間的數據類型向大空間的數據類型自動轉換

1.1 整數類型的自動轉換

規律:byte、short、char在做計算時,會自動提升數據類型爲int

package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        byte a = 1;
        //錯誤: 不兼容的類型: 從int轉換到byte可能會有損失
        //a定義爲變量,編譯檢測:假設a取byte數據類型中的最大值時,與1做加運算將超出byte數據類型的取值範圍,造成精度損失
        //byte b = a + 1;
        int b = a + 1;
        System.out.println("b = " + b);

        short c = 1;
        //short d = c + 2;
        //short在運算時自動提升數據類型爲int
        int d = c + 2;
        System.out.println("d = " + d);

        char e = 'a';
        //char類型數據在參與運算時,每一個char類型的數據都對應一個數值類型的ASCII碼,參與計算的是字符對應的ASCII碼
        int f = e + 1;
        System.out.println("f = " + f);

        //short、byte與char任意類型組合運算,自動提升爲int
        int g = a + c;
        System.out.println("g = " + g);
    }
}

int在與其他數據類型的數據計算達到溢出時,直接返回溢出後的數據值

package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        int intTypeMaxValue = 2147483647;
        /*
        計算過程:
        1、計算機能直接識別的代碼爲二進制代碼
        2、2147483647 轉換爲二進制碼:int數據類型佔內存大小4個字節,1個字節佔8個位,首位爲符號位
            0111 1111  1111 1111  1111 1111  1111 1111
        3、1 轉換爲二進制碼
            1
        4、兩者相加結果(二進制)
            1000 0000  0000 0000  0000 0000  0000 0000
        5、兩者相加結果(十進制)
            -2147483648
         */
        long resultValue = intTypeMaxValue + 1;
        //輸出 resultValue = -2147483648
        System.out.println("resultValue = " + resultValue);
    }
}

任何整數類型與long類型做運算,都自動轉換爲long類型

package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        byte number1 = 1;
        long number2 = 2;
        //錯誤: 不兼容的類型: 從long轉換到byte可能會有損失,也就是說 number1 + number2 的結果爲long數據類型
        //byte result = number1 + number2;
        long result = number1 + number2;
        System.out.println(result);
    }
}

常量在做運算時,只要不超出定義的數據類型的範圍就不會出錯,也不會發生類型的自動提升

1.2 小數類型的自動轉換
package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        float a = 1.2f;
        //float類型與常量計算,不會出現類型自動提升
        float b = a + 1;
        System.out.println(b);

        //float與float計算,不會出現類型自動提升
        float c = a + b;
        System.out.println(c);

        byte byteValue = 1;
        short shortValue = 1;
        int intValue = 1;
        long longValue = 1;
        //float類型和所有整數類型計算都會轉換成float
        float d = a + shortValue;
        System.out.println(d);

        //double類型同理

        //double 與 float 計算,類型自動轉換成 double
    }
}

總結:不同數據類型參與計算後,結果自動向大的一個數據類型轉換

2 強制類型轉換

佔用內存大空間數據類型 向 小空間數據類型 轉換

語法:(目標數據類型) 轉換的變量;

2.1 整數類型的強制轉換

強制類型轉換可能存在損失精度的情況:轉換的數值超出目標轉換類型

package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        int number = 100;
        //short result = number;
        //將int強制類型轉換爲short
        short result = (short) number;
        System.out.println(result);

        //將int強制類型轉換爲 byte
        byte result1 = (byte) number;
        System.out.println(result1);

        long number1 = 12;
        byte result2 = (byte) number1;
        System.out.println(result2);  
    }
}

2.2 小數類型的強制轉換

package blog.csdn.net.karen.javasedemo;

/**
 * 變量演示,數據類型轉換
 * <p>
 * Created by Karen Chia on 2018/11/8
 */
public class VariableDemo {

    public static void main(String[] args) {
        float a = 1.1f;
        //小數轉換爲整數類型(long、int、short及byte)後會捨棄小數位
        int result1 = (int) a;
        System.out.println(result1);

        double b = 2.1;
        float result2 = (float) b;
        System.out.println(result2);

        //char類型可轉換爲byte、short、int、long、float及double
        char c = 'a';
        byte result3 = (byte) c;
        System.out.println(result3);

        //整數類型轉換爲char字符類型
        char result4 = (char) 97;
        System.out.println(result4);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章