1.下列代码的输出结果是:()(单选)
public static voidmain(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);
每日笔记:Java中,字符串在不同字符编码中字母和汉字占字节数情况:
①Unicode:字母 2 汉字 2 占位符 2
②GBK: 字母1 汉字2
③UTF-8:字母1 汉字3