變量占用的字節(jié)
我們都知道基本類型莺戒,byte跟boolean是1個字節(jié),short跟char是2個字節(jié),int跟float是4個字節(jié)痴昧,long跟double是8個字節(jié)。
類型轉(zhuǎn)換
小類型是可以直接向大類型轉(zhuǎn)換的冠王,但是反過來赶撰,就有可能造成數(shù)據(jù)丟失,必須顯式的進(jìn)行類型轉(zhuǎn)換柱彻。同時浮點(diǎn)類型向整數(shù)類型轉(zhuǎn)換豪娜,也有可能造成數(shù)據(jù)丟失,必須顯式轉(zhuǎn)換哟楷。
int a = (int) 101L;
int b = (int) 1.1f;
float c = 11;
long d = 11;
這里浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)瘤载,默認(rèn)進(jìn)行的是截尾操作,如果要進(jìn)行取舍卖擅,可以使用Math.round()方法鸣奔。
還有一種特殊情況,就是兩個整數(shù)類型相除的時候惩阶,必須要對其中一個進(jìn)行類型轉(zhuǎn)換挎狸,才能得到一個浮點(diǎn)數(shù)。比如下面這段代碼琳猫,p1得到的結(jié)果是1.0伟叛,只有p2和p3才能得到正確的結(jié)果。
float p1 = (float)((1 + 4) / 3);
float p2 = (float)(1 + 4) / 3;
float p3 = (1 + 4) / (float)3;
一個大類型跟一個小類型數(shù)據(jù)進(jìn)行運(yùn)算脐嫂,比如加減乘除统刮,會自動轉(zhuǎn)換成大類型,如果要賦值給小類型账千,也必須顯式轉(zhuǎn)換侥蒙。
int i = (int) (101L + 11);
最后,在java中進(jìn)行按位運(yùn)算的時候匀奏,會自動轉(zhuǎn)換成int類型鞭衩。
byte a = 9;
byte b = 6;
byte c = (byte) (a | b);
雖然java中整數(shù)的默認(rèn)類型是int,但是上面直接把9賦值給byte類型是可以的,因?yàn)榫幾g器能夠識別這個常量在byte能夠接受的范圍內(nèi)论衍。