• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java教程
    Java標識符與關鍵字
    Java變量
    Java數據類型
    Java運算符
    Java控制語句
    Java方法
    Java面向對象
    Java對象的創建和使用
    Java封裝
    Java中static和this
    Java繼承
    Java方法覆蓋和多態
    Java super
    Java基礎練習題

    Java基本數據類型轉換

     

     

    Java基本數據類型之間是存在固定的轉換規則的,現總結出以下6條規則,無論是哪個程序,將這6個規則套用進去,問題迎刃而解:

     

    ● 八種基本數據類型中,除boolean類型不能轉換,剩下七種類型之間都可以進行轉換;

     

    ● 如果整數型字面量沒有超出byte,short,char的取值范圍,可以直接將其賦值給byte,short,char類型的變量;

     

    ● 小容量向大容量轉換稱為自動類型轉換,容量從小到大的排序為:byte < short(char) < int < long < float < double

    注:short和char都占用兩個字節,但是char可以表示更大的正整數;

     

    ● 大容量轉換成小容量,稱為強制類型轉換,編寫時必須添加“強制類型轉換符”,但運行時可能出現精度損失,謹慎使用;

     

    ● byte,short,char類型混合運算時,先各自轉換成int類型再做運算;

     

    ● 多種數據類型混合運算,各自先轉換成容量最大的那一種再做運算;

     

    接下來,根據以上的6條規則,我們來看一下以下代碼,指出哪些代碼編譯報錯,以及怎么解決:

     

    public class TypeConversionTest {
    	public static void main(String[] args) {
    		byte b1 = 1000;
    		byte b2 = 20;
    		short s = 1000;
    		int c = 1000;
    		long d = c;
    		int e = d;
    		int f = 10 / 3;
    		long g = 10;
    		int h = g / 3;
    		long m = g / 3;
    		byte x = (byte)g / 3;
    		short y = (short)(g / 3);
    		short i = 10;
    		byte j = 5;
    		short k = i + j;
    		int n = i + j;
    		char cc = 'a';
    		System.out.println("cc = " + cc);
    		System.out.println((byte)cc);
    		int o = cc + 100;
    		System.out.println(o);
    	}
    }

     

    編譯報錯,錯誤信息如下所示:

     

    圖4-16:類型轉換編譯錯誤提示信息

     

    如何修改,請看以下代碼:

     

    public class TypeConversionTest {
    	public static void main(String[] args) {
    		//1000超出byte取值范圍,不能直接賦值
    		//byte b1 = 1000;
    		//如果想讓上面程序編譯通過,可以手動強制類型轉換,但程序運行時會損失精度
    		byte b1 = (byte)1000;
    		//20沒有超出byte取值范圍,可以直接賦值
    		byte b2 = 20;
    		//1000沒有超出short取值范圍,可以直接賦值
    		short s = 1000;
    		//1000本身就是int類型,以下程序不存在類型轉換
    		int c = 1000;
    		//小容量賦值給大容量屬于自動類型轉換
    		long d = c;
    		//大容量無法直接賦值給小容量
    		//int e = d;
    		//加強制類型轉換符
    		int e = (int)d;
    		//int類型和int類型相除最后還是int類型,所以結果是3
    		int f = 10 / 3;
    		long g = 10;
    		//g是long類型,long類型和int類型最終結果是long類型,無法賦值給int類型
    		//int h = g / 3;
    		//添加強制類型轉換符
    		int h = (int)(g / 3);
    		//long類型賦值給long類型
    		long m = g / 3;
    		//g先轉換成byte,byte和int運算,最后是int類型,無法直接賦值給byte
    		//byte x = (byte)g / 3;
    		//將以上程序的優先級修改一下
    		byte x = (byte)(g / 3);
    		short y = (short)(g / 3);
    		short i = 10;
    		byte j = 5;
    		//short和byte運算時先各自轉換成int再做運算,結果是int類型,無法賦值給short
    		//short k = i + j;
    		int n = i + j;
    		char cc = 'a';
    		System.out.println("cc = " + cc);
    		//將字符型char轉換成數字,'a'對應的ASCII是97
    		System.out.println((byte)cc);
    		//char類型和int類型混合運算,char類型先轉換成int再做運算,最終197
    		int o = cc + 100;
    		System.out.println(o);
    	}
    }

     

    運行結果如下圖所示:

     

    圖4-17:類型轉換測試

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏