java 基本資料型別

2021-06-18 01:35:46 字數 3178 閱讀 1931

一、基本資料型別 

整型:byte、short、int、long (在計算機中以二進位制補碼格式儲存)

浮點型:float、double (在計算機中以ieee754格式儲存)

字元型:char (在計算機中以unicode碼格式儲存)

布林型:boolean (只有true和false兩個值)

二、 1.長整型:long

定義:long a=100;int b=a; (編譯出錯)

給a重新賦值:long a=2147483648; (編譯出錯)

定義:long a=2147483648l;(正確,說明此時可以是long型的取值範圍)

說明在long型的資料後不加l/l時,資料仍為long型,但其取值範圍卻是int型的取值範圍;資料後加l/l時,取值範圍才是long型的取值範圍。

2.浮點型:long

定義:float a=19; 輸出a時為19.0

定義:float a=19.1; (編譯出錯)

定義:float a=19.1f; (正確)

說明在 float型的資料後不加f/f,則資料不能有小數字,但輸出時,能夠輸出一位小數;若在float型的資料後加上f/f,則資料可以有小數字;

三、型別轉換(注:boolean型不會發生型別轉換,基本型別和復合型別不能相互轉換)

1.自動轉換

1)賦值轉換:用於短位元組的資料型別轉換成長位元組的資料型別(byte型的資料不能轉換成char型,short型和char型資料也不能相互轉換)

2)單目運算子提公升

++、——運算子不會自動提公升,+(正)、-(負)會將byte、short、char型的資料自動轉換成int型的資料

3)雙目運算子提公升

如果有乙個運算元是double型的,則把另乙個轉換成double型;否則如果有乙個運算元是float型的,則把另乙個轉換成float型;否則 如果有乙個運算元是long型的,則把另乙個轉換成long型;否則兩個運算元都轉換成int型。

4)三目運算子? : 其中op1必須是boolean型的,而op2和op3兩運算元必須是能夠自動轉換成相同型別的資料,op2和op3會自動提公升為兩運算元中位元組較長的乙個,並且結果為提公升後的型別。

如:byte a1=20;

short a2=10;

boolean b=true;

short c = b ?

a1 : a2;

結果為short型的資料c

2.強制轉換

例子:int a;

byte b=(byte)a;

定義:a=-126;

(分析:int形的資料有4個位元組,而byte形的資料只有1個位元組,所以只取int型資料的最後乙個位元組)

a的原碼: 10000000,00000000,00000000,01111110

補碼: 11111111,11111111,11111111,10000010

法一:r=(10000010)=130 (此時將 10000010 看成是純的二進位制數去計算,而不考慮它的符號位); byte型資料範圍〔-128,127〕,由於 r>127,所以 r=r-m (若整型資料值域[-l,r],則m=l+r+1),如果r還不在byte型資料的取值範圍內,則繼續 r=r-m 直至r在其取值範圍內,取得r後,即為byte型的 b .此處r=-126,所以輸出b為-126.

法二:直接將int型資料的最後乙個位元組看成是byte型資料的補碼形式,在將補碼轉換成原碼,即得到 b

四、邏輯運算子

1.&&和|| (&&的優先順序要高於||的)

特點:只要左運算元已經得出整個表示式的值,就不再計算右運算元的之值,左右運算元必須為boolean型的。

例子:boolean test1= ++x==-1 && ++x==1 || ++x=2;

boolean test2= ++y==-1 || ++y==1 && ++y=2;

system.out.println(x+" "+test1);

system.out.println(y+" "+test2);

結果:1 false

2 true

2.&和| (邏輯位運算子)

特點:先把兩個運算元的值計算出來,然後再進行邏輯運算

int x=-1,y=-1;

boolean test1= ++x==-1 & ++x==1 | ++x=2;

boolean test2= ++y==-1 | ++y==1 & ++y=2;

system.out.println(x+" "+test1);

system.out.println(y+" "+test2);

結果: 2 false

2 true

五、移位運算

<< (左移)高位丟失、低位以0填充

>> (右移) 低位丟失、高位以符號位填充

>>> (無符號位右移) 低位丟失、高位以0填充

此運算子不會對左右兩運算元作算術提公升,但會對左運算元進行單獨提公升,若為byte、short、char、int型,則得到結果為int型,若為long型,則結果為long型,但左右運算元均不能為浮點型,否則出錯。

當左運算元為int型時,右運算元的低5位才有用,這樣可以防止移位超過int型所具有的位數,當左運算元為long型時,右運算元的低6位才有用。

例子:int a=-2;

short b=-10;

int c=a>>b;

b的補碼:11111111,11111111,11111111,11110110

取b的最後5位, r=(10110)=22;

a的補碼:11111111,11111111,11111111,11111110

將a向右移動22位,再在高位補上1,得到 11111111,11111111,11111111,11111111 ,轉換成原碼得到 c=-1

六、賦值運算

1.簡單賦值運算

表示式: 《變數》=《表示式》

左運算元可以事先沒有賦值

表示式的型別必須和變數的型別相同,或能賦值轉換成變數的型別,

2.組合賦值運算

表示式:《變數》 op= 《表示式》

int a=10;

double b=23.3;

a*=b;

左運算元事先一定要賦值

左邊的型別和右邊的型別不一定要相同,此處a*b得到的是double型的,組合運算子會自動把double型的值轉換成int型的值存入變數a中。

Java 基本資料型別

基本資料型別 變數持有資料本身的值 引用型別 是某個物件的引用,而並非物件本身 引用型別用在物件上的 乙個物件可以被多個引用所指向,但同一時刻,每個引用只能指向唯一的物件 如果乙個物件被多個引用所指向,那麼無論哪個引用對物件的屬性進行修改,都會反映到其他的引用當中 型別 位數 位元組數 取值範圍 舉...

Java基本資料型別

基本資料型別都是有取值範圍的,若超出範圍,則編譯報錯。位元組型的長度 1byte 位元組 8bit 位 即範圍為 128 127 如 byte b 200 或者 byte b 200,這都是錯誤的 字元型的長度 1char 16位 範圍為0 2 16 短整型的長度 1short 16位 範圍為 2 ...

java基本資料型別

1.四種整數型 bate short int long byte 資料型別是8位 有符號的,以二進位制補碼的整數 最小值 128 2 7 最大值是127 2 7 1 預設值是 0 short short資料型別是16位 有符號的以二進位制補碼表示的整數 最大值是 32768 2 1 最大值是 327...