一、數據類型分類:主要分為 基本類型、引用類型兩大類;
二、基本類型 轉換原則
1、類型轉換主要在在 賦值、方法調用、算術運算 三種情況下發生。
a、賦值和方法調用 轉換規則:從低位類型到高位類型自動轉換;從高位類型到低位類型需要強制類型轉換:
(1)布爾型和其它基本數據類型之間不能相互轉換;
(2)byte型可以轉換為short、int、、long、float和double;
(3)short可轉換為int、long、float和double;
(4)char可轉換為int、long、float和double;
(5)int可轉換為long、float和double;
(6)long可轉換為float和double;
(7)float可轉換為double;
另外還有是直接數的賦值:先通過直接數判斷其類型,然后基本原則和上面談到的賦值原則基本一致;只是直接數是整數時特殊一點,當在可表示范圍內時,可以直接賦值給 byte short char三種類型;
b、算術運算 中的類型轉換:1 基本就是先轉換為高位數據類型,再參加運算,結果也是最高位的數據類型;2 byte short char運算會轉換為Int;
(1)如操作數之一為double,則另一個操作數先被轉化為double,再參與算術運算。
(2)如兩操作數均不為double,當操作數之一為float,則另一操作數先被轉換為float,再參與運算。
(3)如兩操作數均不為double或float,當操作數之一為long,、則另一操作數先被轉換為long,再參與算術運算。
(4)如兩操作數均不為double、float或long,則兩操作數先被轉換為int,再參與運算。
特殊:
(1)如采用+=、*=等縮略形式的運算符,系統會自動強制將運算結果轉換為目標變量的類型。
(2) 當運算符為自動遞增運算符(++)或自動遞減運算符(--)時,如果操作數為byte,short或char類型不發生改變;
三、引用類型 轉換原則
1、基本類型 與 對應包裝類 可自動轉換,這是自動裝箱和折箱的原理;
Integer c1 = new Integer(1); Integer c2 = 2; int cc = new Integer(3); //另:String 與 基本類型的互轉 int i = Integer.parseInt("13"); int ii = Integer.valueOf("12"); String s1 = String.valueOf(123); String s2 = Integer.toString(i); String s3 = "" + i;
2、兩個引用類型間轉換:
1、子類能直接轉換為父類 或 接口類型;
2、父類轉換為子類要 強制類型轉換;且在運行時若實際不是對應的對象,會拋出ClassCastException運行時異常;