一.java的類型轉換:
首先先了解java的基本數據類型:
我們知道java提供了八種基本數據類型,分別是:四個整數型(byte,short,int,long),兩個浮點型(double,float),一種字符類型(char),以及一種布爾型(boolean)。類型表示范圍如下:
byte:8位,最大存儲數據量是255,存放的數據范圍是-128~127之間。
short:16位,最大數據存儲量是65536,數據范圍是-32768~32767之間。
int:32位,最大數據存儲容量是2的32次方減1,數據范圍是負的2的31次方到正的2的31次方減1。
long:64位,最大數據存儲容量是2的64次方減1,數據范圍為負的2的63次方到正的2的63次方減1,直接賦值時必須在數字后加上l或L。
float:32位,數據范圍在3.4e-45~1.4e38,直接賦值時必須在數字后加上f或F。
double:64位,數據范圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加。
boolean:只有true和false兩個取值。
char:16位,存儲Unicode碼,用單引號賦值。
其次 ,java的類型轉換該如何實現?
1)強制類型轉換
即強行將類型范圍大的變量、數據賦值給類型范圍小的類型。只有當兩種數據類型不兼容,或目標類型的取值范圍小於源類型時,這時就需要進行強制類型轉換。
例題:
描述:
設計一個方法,將一個小於2147483647的double類型變量以截斷取整方式轉化為int類型
輸入描述:
輸出描述:
import java.util.Scanner; public class Main { //write your code here...... int i = (int)d; return i; } } |
表達:數據類型 變量2 = (數據類型)變量1、數據;
強制類型轉換會帶來哪些問題?
1.可能會造成數據丟失;
2.上述例題中,將浮點型強轉成整形,直接丟掉小數部分,保留整數部分返回,數據的精確度不一致,例如輸入12.65,輸出為12;
二)自動類型轉換
即:數字表示范圍小的數據類型可以自動轉換成范圍大的數據類型,且兩種數據類型兼容的情況下,就會發生自動類型轉換。
范圍:byte,short,char→int→long→float→double;(從低級類型數據轉換成高級類型數據)
其中char 類型比較特殊,char 自動轉換成 int、long、float 和 double,但 byte 和 short 不能自動轉換為 char,而且 char 也不能自動轉換為 byte 或 short。
例如:類型一:低級變量可以直接轉換為高級變量,下列語句可在java直接通過
byte b;
int i=b;
long l=b;
float f=b;
double d=b;
類型2:若char型向高級類型(整型)轉換時,會轉換為對應ASCII碼值
char c='c';
int i=c;
System.out.println("輸出:"+i);
結果是:輸出:99;
注意:byte,short,char三種類型而言,他們是平級的,不能相互自動轉換,需使用強制類型轉換。
三)包裝類過渡類型轉換
包裝類,就是可以直接將簡單類型的變量表示為一個類,在執行變量類型的相互轉換時,我們會大量使用這些包裝類。Java共有六個包裝類,分別是Boolean、Character、Integer、Long、Float和Double,從字面上就可以看出它們分別對應於 boolean、char、int、long、float和double。
對比之前兩種簡單數據類型轉換,包裝類過度類型轉換屬於高級數據類型轉換,即先聲明一個變量,然后生成一個對應的包裝類,利用包裝類的各種方法進行類型轉換。
例:
當把float型轉換為double型時:
float f1=100.00f; Float F1=new Float(f1); double d1=F1.doubleValue();//F1.doubleValue()為Float類的返回double值型的方法 |
簡單類型的變量轉換為相應的包裝類,可以利用包裝類的構造函數。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各個包裝類中,總有形為××Value()的方法,來得到其對應的簡單類型數據。利用這種方法,也可以實現不同數值型變量間的轉換,例如,對於一個雙精度實型類,intValue()可以得到其對應的整型變量,而doubleValue()可以得到其對應的雙精度實型變量。