1. 程式人生 > 其它 >強制型別提升、自動型別轉換

強制型別提升、自動型別轉換

自動型別提升、強制型別轉換、String型別

自動型別提升和強制型別轉換都是針對於基本資料型別而言。首先,要把基本資料型別的種類及一些特性搞清楚、弄明白。、

基本資料型別

數值型 ①整數型別:byte(1位元組)、short(2位元組)、int(4位元組)、long(8位元組) ②浮點型別:float(4位元組)、double(8位元組)

字元型:char(2位元組)

布林型:boolean(1位元組)

注:

①java整型變數預設為int型,宣告long型的一般後邊要加"l"或"L",一般也不會宣告為long型,除非儲存的數值特別大

②浮點型別十進位制表示方式必須有小數點。通常採用double雙精度浮點型,精度是單精度float的兩倍,宣告為float型別,後面要加"f"或"F"

③定義char型變數,一般用**’’**定義,裡邊只寫一個字元,兩個字元編譯就不通過;裡邊可以有轉義字元char=’\t’;可以計算,因為字元對應的有Unicode編碼;還有一種直接使用U你code值來表示字元型常量,但很少使用。例如:char=‘u\0043’ 對應字元c。

自動型別提升

自動資料型別只在除了boolean型之外的7中基本資料型別之間進行!也就是當容量小的資料型別的變數和容量大的變數做運算時,結果自動提升為容量大的資料型別。(此時的容量指的是,表示的數的範圍的大和小;例如;容量float>容量long)

轉換規則如下

在這裡插入圖片描述

char c =‘a’;

int i = 5;

fload d = .314F;

double result = c + i + d;//這個就是正確的,因為自動型別提升為double型別了

byte a = 1;

byte b = 2;

a = a+b; //編譯出錯,因為先自動型別提升成int,int不能轉為byte,所以編譯報錯,這就需要用到強制型別轉換

a += b; //自加沒有自動型別提升問題,+=就是一個操作符。

強制型別轉換

強制型別轉換就是自動型別提升的逆運算,還是隻涉及七種資料型別,使用強轉符,可能導致精度損失

byte b1 = 2;
int i1 = 129;
byte b2 = (byte) (b1 + i1);
byte b1 = 2;
int i1 = 129;
byte b2 = b1 + i1; 這樣會報錯,因為沒有使用強轉符

注:

①byte、char、short三者不會進行相互轉換,他們三者做運算時,首先轉為int

②boolean型別不能與其它資料型別運算。

③當把任何基本資料型別的值和字串(String)進行連線運算時(+),基本資料類

型的值將自動轉化為字串(String)型別。

④賦值的時候要麼滿足型別相同,要麼滿足自動型別提升。

String型別

String型別是引用資料型別,進行連線運算。格式為String=“ ”;

例如:String = xx + xx + xx + xx;前邊只要有一個String後邊全是連線運算。

可以和8中基本資料型別進行運算。

g = xx + xx + xx + xx;前邊只要有一個String後邊全是連線運算。

可以和8中基本資料型別進行運算。