Java基础练习1(数据类型转换)

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

posted on 2019-04-23 20:44  ChenZX  阅读(906)  评论(0编辑  收藏  举报

导航