第二周测试总结分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第⼆周测试总结分析
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 .32^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是书上页码,详情请看书)。