在講解基本類型數據運算之前我們首先來了解各種基本數據類型:
Java中一共有8中基本數據類型,並且每種數據類型所占的存儲空間是固定的,這種特性也增加了java的可移植性,這一點和c語言c++是不同的,因為java是在虛擬機上運行的,數據類型和操作系統以及硬件間的適配是通過虛擬機來實現的。
基本介紹
Java中的8中基本數據類型:byte short int long float double boolean char
byte short int long都表示有符號數,即最高位是用來表示正負的,0表示正,1表示負;
byte占一個字節,表示范圍:-~2^7-1 即-128~127
short 占兩個字節,表示范圍:--~2^15-1
int 占四個字節 ,表示范圍:-~2^31-1
long 占八個字節,表示范圍:-~2^63-1
float 占四個字節, double占八個字節
char 占兩個字節,一個char代表一個unicode碼,范圍:0~2^16
boolean 占一個字節,只有true和false兩個值
使用注意事項:
一、 在程序中使用整數常量,默認該常量為int型
二、 如果一個整數的值大於int類型的范圍,則需要將其賦值給一個long類型的變量,並且必須在該數的后面加上l或者L
三、 程序中小數是默認為double類型的,若要將其賦值給float類型的數據則需要在數據后面加上f或者F,或者直接強制轉換
四、 可以直接將byte、short、int、long類型的數值賦值給float和double;
類型轉換與運算
類型轉換包括強制類型轉換和自動類型轉換;
Java允許整型、字符型、浮點型數據進行混合運算,運算時不同類型的數據線轉換為同一類型后再進行運算,轉換的原則為:
| 操作數1 |
操作數2 |
轉換后的類型 |
| byte 、short、int |
byte 、short、int |
int |
| byte 、short、int |
long |
long |
| byte 、short、int、long |
float |
folat |
| byte 、short、int、long、float |
double |
double |
| char |
int |
int |
當發生上述的運算時就會進行自動類型轉換,轉換結果如上;
而強制類型轉換是不管是什么類型都可以將其轉換為其他的類型(可能會出錯),格式如下:
(想轉換為的類型)類型變量;
例如:int a=(int)1.2;
這樣做可能會造成精度的丟失,還有有些類型是不可以相互轉換的,這樣的話就會出錯,可以強制類型轉換的前提是要可以相互轉換。例如boolean是不能進行類型轉換的。
隱式類型轉換
隱式類型是這樣一種現象,前面我們說到整數是默認為int型的,如果沒有做其他優化的話 byte a=3;是有錯誤的,但是實際上這句話是可以正常編譯的,這是因為虛擬機做了隱式類型轉換,當我們將一個整數賦值給byte、short、char類型的變量時,如果該整數不超過對應變量的取值范圍時就會進行隱式類型轉換,隱式類型轉換的前提是賦值的數是整數常量。例如:
byte a=9;//正確
int b=9; byte c=b;//錯誤,因為b是一個int類型的變量
常見錯誤舉例
例如:byte a=1;
a=a+1;//錯誤,因為等號右邊已經轉換為了int類型,而左邊為byte類型
a+=1;//正確,這句話等效於a=(byte)(a+1);
例如:
byte a=3+4;//正確,編譯時先算出3+4等於10,再進行隱式類型轉換
byte b=3; byte c=4;
byte d=b+c;//錯誤,因為在計算是就會發生自動類型轉換將等式右邊轉換為int,見上面表格第一行;
大家有如有遇到基本類型數據相關問題的歡迎留言
