1. 程式人生 > >Java的強制型別轉換與隱式型別轉換

Java的強制型別轉換與隱式型別轉換

一.隱式型別轉換

1.Java中的8大基本資料型別

java基本資料型別就8種,除了這些都是引用型的了。

java四類八種基本資料型別:
第一類:整型 byte short int long
第二類:浮點型 float double
第三類:邏輯型 boolean(它只有兩個值可取true false)
第四類:字元型 char
在棧中可以直接分配記憶體的資料是基本資料型別。

引用資料型別:
是資料的引用在棧中,但是他的物件在堆中。

位元組:
boolean 布林型 1/8
byte 位元組型別 1
char 字元型 2 一個字元能儲存一箇中文漢字
short 短整型 2
int 整數型別 4
float 浮點型別(單精度) 4
long 長整形 8
double 雙精度型別(雙精度) 8

八大基本資料型別佔用記憶體大小排序:
boolean < byte < char <= short < int <= float < long <= double

2.隱式型別轉換

byte->short-> int ->float,long -> double
char-> int ->float,long -> double
注意:

  • byte不能隱式轉化為char
  • short和char之間不能相互轉換
  • float和long之間不能相互轉換
  • boolean不能隱式轉換為任何其他型別

隱式型別轉換舉例:


(1)short s1 = 1;s1 = s1 + 1;
編譯不能通過,因為1預設為int型別,s1+1運算後的結果是int類似,再賦值給short型別就會出錯。
(2)ReturnType method(byte x, double y) {
return (short)x/y*2;
}

返回型別應該是double型別。因為x強制轉換為short型別後,除以double型別的y,結果會自動升級為double型別。
注:強制轉換比四級運算的優先順序高。

二.強制型別轉換

使用強制型別轉換時,可能會失去精度,所以在進行強制型別轉換之前,一定要注意轉換後的值是否與轉換前一致。
注意:


在Java中,預設小數的型別為double,如果要將小數定義為float,就必須通過下面的兩種方法將其轉化為float型別,否則編譯無法通過。
float f = 3.1f;
float f = (float)3.1;