基本數據類型之間的相互轉換分為兩種,分別是自動類型轉換和強制類型轉換。
自動類型轉換
當需要從低級類型向高級類型轉換時,java會自動完成從低級類型向高級類型轉換。低級類型是指取值范圍相對較小的數據類型,高級類型是指取值范圍相對較大的數據類型,如long相對於float是低級數據類型,但是相對於int類型是高級數據類型。在基本數據類型中除boolean外均可參與算數運算。
數據類型從低到高的排序:

- 在算數表達式中含有int、long、float、double型的數據
如果在算數表達式中含有int、long、float、double型的數據,java首先會將所有數據類型相對較低的變量自動轉換為表達式中數據類型最高的數據類型,然后再計算,並且計算結果的數據類型也為表達式中數據類型相對最高的數據類型。
例如:
byte b=75;
char c='c';
int i=123;
long l=12345L;
long result=b*c-i+l;
- 在算數表達式中只含有byte、short、char型的數據
如果在算數表達式中只含有byte、short、char型的數據,java首先將所有變量的類型自動轉換成int型,然后在進行計算,並且計算結果的數據類型也為int型。byte、short、char三者之間不能直接相互轉換。
byte b=75;
char c='c';
int result=b+c;
強制類型轉換
如果需要把數據類型相對較高的數據或變量賦值給數據類型相對較低的變量,就必須進行強制類型轉換。
例如:
int a=(int)7.5;
//a的最終結果為7
byte b=(byte)774;
//b的最終結果6
變量b的值為6,原因是整數774超出了byte型的取值范圍,在進行強制類型轉換時,表示整數774的二進制數的前24位被舍棄,所有最終賦值為變量b的數據是后8位的二進制數。
