Java數據類型轉換的部分練習和註意點(double類型減法、類型轉型、變數相加) ...
1.下列代碼的輸出結果是:()(單選)
public static void main(String[] args){ double money = 3.0; money -= 2.9; System.out.println(money); }
A. 0.1
B. 0.099
C. 0
D.0.10000000000000009
答案:D
解析:2.9轉換為二進位數時進行運算,會丟失精度
2.下列數據類型轉換,必須進行強制類型轉換的是:()
A.byte→int
B.short→long
C.float→double
D.int→char
答案:D
解析:數據類型轉換:(反過來轉換要強制轉型,可能會丟失精度)
char→
byte→short→int→long→float→double
3.下列賦值語句中,正確的是:()
A.byte b1 = 10, b2 = 20; byte b=b1+b2;
B.byte b1 = 10, b2 = 20; byte b=b1+20;
C.byte b1 = 10, b2 = 20; byte b=b2+10;
D.byte b1 = 10; byte b=++b1;
答案:D
詳解:兩個字面量相加為char或者int
變數和字面量相加只能為int類型
變數和變數相加只能為int
byte 與 byte(或short、char)類型進行運算時會自動轉換為int類型,兩個int類型相加之後也是int類型,需強制轉換為byte類型
拓展運算符(++,--,+=,-=,*=等)不改變數據類型,但可能會丟失精度
byte b = ++b1; 等價於 byte b =(byte)(b1+1);
4.(多選題)
byte b1=1,b2=2,b3,b6,b8; final byte b4=4,b5=6,b7; b3=(b1+b2); /*語句1*/ b6= b4+b5; /*語句2*/ b8=(b1+b4); /*語句3*/ b7=(b2+b5); /*語句4*/ System.out.println(b3+b6);
以上代碼片段中,存在編輯錯誤的語句是()
A.語句1
B.語句2
C.語句3
D.語句4
答案:ACD
解析:語句1錯誤:b3=(b1+b2);自動轉為int,所以正確寫法為b3=(byte)(b1+b2),或者將b3定義為int
語句2正確:b4,b5都為final類型,不會自動提升,所以和的類型視左邊變數類型而定
語句3錯誤:雖然b4不會自動提升,但是b1仍會自動提升,所以結果一樣需要強轉,b8=(byte)(b1+b4)
語句4錯誤:同上。同時要註意b7為final修飾,只能被賦值一次,然後就不能再改變了
每日筆記:Java中,字元串在不同字元編碼中字母和漢字占位元組數情況:
①Unicode:字母 2 漢字 2 占位符 2
②GBK: 字母1 漢字2
③UTF-8:字母1 漢字3