第二周测试总结分析

1、if关键字后面的小括号内,表达式的值可以为10。
A .true
B .false
答案:B
解析:表达式的值必须为boolean类型,即true/false。

2、表达式0xaa | 0x55的值为
A .FF
B .0
C .255
D .1
答案:C
解析:0xaa 用二进制表示为 10101010 ,0x55 用二进制表示为 01010101 ,按位或之后为 11111111 ,十进制数为255,十六进制数为 0xFF 。

3、表达式15&250的值为
A .FF
B .0
C .255
D .1
答案:B
解析:15 等于1111 ,240等于 11110000,15前面用0补齐为00001111 ,按位与之后为 00000000 ,即结果为0。

4、表达式10 ^ 12的值为
A .0x06
B .120
C .9
D .14
答案:A
解析:亦或(“ ^ ”)运算,相同取0,不同取1。1010 ^ 1100 =0110 , 十进制表示为6,十六进制表示为 0x06 。

5、表达式-2 >> 1的值为
A .2^31 – 1
B .2^15 – 1
C .1
D .-1
答案:D
解析:带符号右移(“ >> ”),即有符号位时,负数符号位补1,正数符号位补0, -2 的二进制求法是正数取反加1,因此 2 的二进制表示为0000 0000 0000 0000 0000 0000 0000 0010 ,取反加一为1111 1111 1111 1111 1111 1111 1111 1110 ,即 -2 的二进制表示。带符号右移之后为 1111 1111 1111 1111 1111 1111 1111 1111 ,除符号位之外,减一取反,得到带符号十进制数为-1。

6、表达式-2 >>> 1的值为
A .2^31 – 1
B .2^15 – 1
C .1
D .-1
答案:A
解析:无符号右移 (“>>>”) ,即无论正负数,右移之后符号位均补 0 。-2 的二进制无符号右移一位之后为 0111 1111 1111 1111 1111 1111 1111 1111,即 2^31 - 1。注意:>>、<<、>>>运算符只针对int型和long型,byte ,short ,char型需要转换成int型再进行操作。

7、下列与34的值相等的是
A .3/2
B .3<2
C .3
2^2
D .3<<2
答案:D
解析:3*4即3左移两位。C项:“^”在Java中表示按位异或。

8、观察以下方法的定义,则该方法的返回类型为

ReturnType method(byte x, double y) {

return (short)x/y*2;

}
A .double
B .short
C .int
D .byte
答案:A
解析:short将byte类型的x强制转化为short类型,但y的精度更高,所以返回类型为double。

9、在命令行输入“java demo 3”,下列程序的运行结果为

public class unsigned {

public static void main(String args[]) {

int i = Integer.parseInt(args[0]);

switch(i) {

case 1:System.out.println("Spring");break;

case 2:System.out.println("Summer");break;

case 3:System.out.println("Autumn");break;

case 4:System.out.println("Winter");break;

}

}

}
A .Spring
B .Summer
C .Autumn
D .Winter
答案:C

10、switch(i)中,i的类型可以为byte、char、short、int或long。
A .true
B .false
答案:B

11、下列程序的运行结果为:

int i=10;

do {

i/=2;

} while( i-- > 1 );

System.out.println(i);
A .1
B .5
C .2
D .-1
答案:D

12、下列程序的运行结果为:

int i=10;

do {

i/=2;

} while( --i > 1 );

System.out.println(i);
A .1
B .5
C .2
D .-1
答案:A

13、下列程序的运行结果为:

int b[][] = {{1},{2,2},{2,2,2}};

int sum = 0;

for(int i = 0; i < b.length; i++) {

for(int j = 0; j < b[i].length; j++) {

sum += b[i][j];

}

}

System.out.println(sum);
A .32
B .11
C .2
D .3
答案:B

14、定义i=2,则下面程序的运行结果为:

int i = 2;

switch(i) {

case 1:System.out.print(1);

case 2:case 3:System.out.print(3);

case 4:System.out.print(4);

}
A .3
B .34
C .4
D .无输出
答案:B

15、下列哪个叙述是正确的?
A .5.0/2+10的结果是double型数据。
B .(int)5.8+1.0的结果是int型数据。
C .苹'+ '果'的结果是char型数据。
D .(short)10+'a'的结果是short型数据。
答案:A
解析:精度由高到低排序为:double float long int char short byte

16、用下列哪个代码替换程序标注的【代码】会导致编译错误?

public class E {

public static void main (String args[ ]) { 

  int m=10,n=0;

  while(【代码】) {

     n++;

  }  

}

}
A .m-->0
B .m++>0
C .m = 0
D .m>100&&true
答案:C

17、假设有int x=1;以下哪个代码导致“可能损失精度,找到int需要char”这样的编译错误。
A .short t=12+'a';
B .char c ='a'+1;
C .char m ='a'+x;
D .byte n ='a'+1;
答案:C

18、下列程序的输出结果是什么?

public class E {

public static void main (String args[ ]) {

char x='你',y='e',z='吃';

   if(x>'A'){ 

       y='苹';

       z='果';

    }

   else

      y='酸';

   z='甜';

   System.out.println(x+","+y+","+z); 

}

}
A .你,苹,果
B .你,苹,甜
C .你,酸,甜
D .你,酸,果
答案:B

19、下列程序的输出结果是什么?

public class E {

public static void main (String args[ ]) {

    char c = '\0';

    for(int i=1;i<=4;i++) {

      switch(i) {

         case 1:  c = 'J';

                 System.out.print(c);  

         case 2:  c = 'e';

                 System.out.print(c); 

                 break; 

         case 3:  c = 'p';

                 System.out.print(c);

         default: System.out.print("好");

      }   

    }

}

}
A .Jep好
B .Jeep好好
C .Jep好好
D .Jeep好
答案:B

20、下列程序的输出结果是什么?

public class E {

public static void main (String []args) {

  int x = 1,y = 6;

  while (y-->0) {

      x--;

  }

  System.out.print("x="+x+",y="+y);

}

}
A .x=-5,y=-1
B .x=-4,y=0
C .x=6,y=0
D .x=7,y=-1
答案:A

21、下列关于标识符的说法,错误的是
A .标识符由字母、下划线、美元符号和数字组成。
B .2016_Java可以作为标识符。
C .标识符中的字母区分大小写。
D .catch不可以作为标识符。
答案:B
解析:P17。B项:标识符不能以数字字符开头。D项:catch是关键字。

22、下列关于Java中整数类型的说法,正确的是
A .一个byte型变量占4bit。
B .unsigned int a = 3是合法的声明。
C .使用关键字long声明long型变量:long minutes = 0x72AL。
D .short类型的变量的取值范围是-215~215-1.
答案:CD
解析:P18-19。A项:byte型变量分配1个字节内存,即8bit。B项:Java没有无符号的byte、short、int和long。

23、下列说法正确的是
A .Java语言有8种基本数据类型。
B .基本数据类型可分为逻辑类型、整数类型、字符类型、浮点类型。
C .short和Float都属于基本数据类型。
D .int a = 0144中的0144是十六进制表示法。
答案:AB
解析:C项:Float是float提供的封装类,不是基本数据类型。D项:以0开头是八进制表示法,十六进制以0x开头。

24、下列说法错误的是
A .“字符类型”中的“字符”指Unicode表中的一个字符。
B .使用System.out.println(“\”)输出反斜线。
C .short类型与char类型均分配2个字节内存,两者取值范围一致。
D .使用(int)’A’观察一个字符在Unicode表中排序位置。
答案:BC
解析:B项:“\”本身在Java中有特殊含义,表示转义字符,因此输出时需要再次转义。C项:char类型是无符号的,与short类型不一致。

25、定义float x = 0.5f; double y = 0.5,则x==y结果为false。
A .true
B .false
答案:B
解析:0.5在float和double的范围内都可以使用二进制精确表示,因此两者相等。

26、下列说法正确的是
A .float a = 3.5;会导致编译错误。
B .byte b = (byte)(-150);则b的值为106。
C .byte c = 10;int d = (int)c;会导致精度的损失。
D .精度由高到低排序为:double float long int char short byte
答案:ABD
解析:2.2节。A项:必须有后缀f或F。B项:超出byte变量的取值范围,b的值为106。C项:int精度比byte高,不会导致精度的损失。

27、关于课本P23示例程序的说法,正确的是
A .程序等待用户在命令行输入数据时,是在Scanner reader = new Scanner(System.in);一句发生阻塞。
B .在命令行运行该程序时,使用ctrl+c可以结束阻塞。
C .输入0.00也可以结束程序的执行,输出sum的值。
D .当用户输入0.3并回车后,程序再次阻塞,该阻塞是由于执行了x = reader.nextDouble();一句。
答案:BCD
解析:A项:执行nextDouble()方法时发生阻塞。C项:观察循环条件发现,x=0时结束循环程序。

28、以下哪些项是正确的char型变量的声明?
A .char ch = "R";
B .char ch = '\'
C .char ch = 'ABCD';
D .char ch = "ABCD";
E .char ch = '\ucafe';
F .char ch = '\u10100'
答案:BE
解析:不可以使用双引号;不可以将多个字符赋给char型变量;\u前缀表示时,必须为十六进制。

29、下列程序中哪些【代码】是错误的?

public class E {

public static void main(String args[]) {

  int x = 8;

  byte b = 127;     //【代码1】

  b = x;           //【代码2】

  x = 12L;         //【代码3】

  long y=8.0;       //【代码4】  

  float z=6.89 ;     //【代码5】

}

}
A .代码1
B .代码2
C .代码3
D .代码4
E .代码5
答案:BCDE

30、数组索引越界,编译可以通过,但运行时会发生ArrayIndexOutOfBoundsException异常。
A .true
B .false
答案:A

31、下列说法错误的是
A .Java中数组的下标的数据类型是整型。
B .浮点型数组的默认值是0
C .数组创建后其大小不能改变。
D .向方法传递数组参数时,传递的是数组的引用。
答案:B
解析:浮点型数组的默认值是0.0f。

32、对于int a[] = new int[3];下列哪个叙述是错误的?
A .a.length的值是3。
B .a[1]的值是1。
C .a[0]的值是0。
D .a[a.length-1]的值等于a[2]的值。
答案:B
解析:a[1]的值是0。

33、下列错误的初始化语句是
A .char str[]="hello";
B .char str[100]="hello";
C .char str[]={'h','e','l','l','o'};
D .char str[]={'hello'};
答案:ABD

34、下面程序的运行结果是:

public static void main(String args[]) {

int x=30;

int[] numbers=new int[x];

x=60;

System.out.println(numbers.length);

}
A .60
B .20
C .30
D .50
答案:C

35、下面程序的运行结果是

public static void main(String args[]) {

char s1[]="ABCDEF\0".toCharArray();

int i=0;

while(s1[i++]!='\0')

System.out.println(s1[i++]);

}
A .ABCDEF
B .BDF
C .ABCDE
D .BCDE
答案:B

36、下列复制数组的方法,错误的是
A .用循环语句逐个复制数组元素。
B .用arraycopy()方法。
C .用“=”复制。
D .用clone方法。
答案:C

37、下列哪一个选项可以将数组a复制到b?
A .arraycopy(a,0,b,0,a.length)
B .arraycopy(a,0,b,0,b.length)
C .arraycopy(b,0,a,0,a.length)
D .arraycopy(a,1,b,1,a.length)
答案:A

38、下列关于课本P29示例程序的说法,正确的是
A .如果注释掉第一行“import java.util.*;”,则“System.out.println(Arrays. toString(a));”和“Scanner scanner = new Scanner(System.in);”两句会报错。
B .折半查找时,必须保证数组是有序的。
C .该程序所示的排序方法为冒泡排序法。
D .count>N/2说明查找结束,没有找到该数字。
答案:ABCD

39、下列是正确的Java字符串的为
A .""""
B ."Oxzabc"
C ."""
D ."\t\t\r\n"
E ."boolean"5
答案:ABD

40、为一个boolean类型的变量赋值,下列方式正确的是
A .boolean = 1;
B .boolean a = (9>=10);
C .boolean a = “true”;
D .boolean a == false;
答案:B
(说明:P是书上页码,详情请看书)

posted @ 2019-04-01 17:08  20175218陈敬勇  阅读(1498)  评论(0编辑  收藏  举报