一、题目
1. 以下程序输出(D)
public static void main(String[] args) {int num = 2;switch (num) {case 1:++num;case 2:++num;case 3:++num;default:++num;break;}System.out.println(num);}
}
A:2
B:3
C:4
D:5
2.将类的成员的访问权限设置为默认的,则成员变量(A)
A:同一包中的类访问
B:其他包中的类访问
C:所有的类访问
D:所有的子类访问
3.对于下面这段代码,以下说法正确的是(C)
public class Test02{public int x;public static void main(String []args){ System. out. println("Value is" + x);}
}
A:程序会打出 "Value is 0"
B:程序会抛出 NullPointerException
C:非静态变量不能够被静态方法引用
D:编译器会抛出 "possible reference before assignment"的错误
4.关于下列代码,说法正确的是(C)
public class Test02{static int arr[] = new int[5];//int数组默认值为0public static void main(String a[]){System.out.println(arr[0]); }
}
A:编译时产生错误
B:编译时正确,运行时将产生错误
C:输出零
D:输出
5.假设score 是一个整数数组,有五个元素,已经正确初始化并赋值,仔细阅读下面代码,程序运行结果是?(B)
temp = score[0];
for (int index = 1;index < 5;index++) {if (score[index] < temp) {temp = score[index];}
}
A:求最大值
B:求最小值
C:找到数组最后一个元素
D: 编译出错
6.下列代码执行后,输出结果是什么(B)
int i=0,s=0;
do{if (i%2 == 0){i++;continue;}i++;s = s + i;
} while (i<7);
System.out.println(s);
A:16
B:12
C:28
D:21
7.在 System.out.printf() 格式化输出语句中,不可以用于浮点数格式化输出的占位符是(D)
A:%f
B:%s
C:%e
D:%d
8.下面关于数组的声明语句中,有语法编译错误的是(B)
A: int[] arr = new int[]{1,'A',3};
B : int[] arr;
arr = {1,2,3,4,5};
C: int[] arr = new int[]{'X','A','S'};
D: int[][] arr = new int[3][];
9.switch的表达式可以是什么数据类型?(B)
A: Object
B: char
C: double
D: float
10.下列代码执行后,输出结果是什么(D)
public static void main(String[] args) {int x = 1, y = 1, z = 1;if (x-- == 1 || y++ == 1 && z++ == 1) {System.out.println("x=" + x + ",y=" + y + ",z=" + z);}}
A: x=0,y=2,z=1
B: x=1,y=2,z=1
C: 没有输出
D: x=0,y=1,z=1
11.下列代码中,ABCD注释标注的哪行代码有错误?(D)
public class Test05 {public static void main(String[] args) {byte b = 'a'; //A int n =100; char c = 65; //B b = b; //C b = b+1; //D}
}
A: A
B: B
C: C
D: D
12.下列代码中,ABCD注释标注的哪行代码有错误?(B)
public class Test05 {public static void main(String[] args) {char ch = '花'; //A byte m = -100; ch = ch-ch; //B m = m; //C m = 127; //D }
}
A: A
B: B
C: C
D: D
13.下列选项中,那个选项中的表达式替换程序标注的【代码】会使得程序输出hello(C)
public class Test { public static void main (String args[ ]) { int m = 0; if(【代码】){ System.out.println("您好");} else {System.out.println("hello");} }
}
A: m-- <= 0
B: ++m > 0
C: m++ > 0
D: --m < 0
14.String字符串的replace()方法的作用是?(C)
A: 根据下标,获取字符串中的指定位置字符
B: 截取字符串
C: 替换字符串
D: 查找子字符串,返回子字符串在原字符串中的下标位置
15.执行下列程序段后,运行结果为:(C)
Integer n1 = Integer.valueOf(127);Integer n2 = Integer.valueOf(127);System.out.println(n1 == n2);System.out.println(n1.equals(n2));
A: false
false
B: true
false
C: true
true
D: false
true
16.下列哪个叙述是正确的?(D)
A: 成员变量的名字不可以和局部变量的名字相同。
B: 方法的参数的名字可以和方法中声明的局部变量的名字相同。
C: 成员变量没有默认值。
D: 局部变量没有默认值。
17.下列说法正确的是(B)
A: java的数组可以随时改变大小
B: String字符串的长度和内容都是不可变的
C: 局部变量和成员变量重名时以成员变量优先
D: 使用final修饰的方法不能被继承
18.假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?(C)
class A{ int i;static String s;void method1() { }static void method2() { }
}
A:System.out.println(a.i);
B: a.method1();
C: A.method1();
D: A.method2();
19.对于下列代码,下列哪个叙述是正确的?(A)
class A { public int i=0; public A(int m) { i = 1; }
}
public class B extends A {public B(int m) { i = 2; } public static void main(String args[]){ B b = new B(100); System.out.println(b.i); //【代码】}
}
A: 程序提示编译错误(原因是A类没有不带参数的构造方法)。
B: 编译无错误,【代码】输出结果是0。
C: 编译无错误,【代码】输出结果是1。
D: 编译无错误,【代码】输出结果是2。
20.关于异常的编程,以下描述错误的是(A)
A:在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
B: Inti=lnteger.parselnt(”123a”);将产生NumberFormatException
C: int a[]=null; a[0]=1; 将产生NullPointerException
D: 输入输出流编程中,读和写时都要抛出IOException
21.以下代码段执行后的输出结果为(D)
public class Test {public static void main(String args[]) {int x = -5;int y = -12;System.out.println(y % x);}
}
A: -1
B: 2
C: 1
D: -2
22.以下Java程序代码,执行后的结果(B)
public class Test {public static void main(String[] args) { Object o = new Object() { public boolean equals(Object obj) { return true; }}; System.out.println(o.equals("Fred"));}
}
A: Fred
B: true
C: 编译错误
D: 运行时抛出异常
23.(多选) java中关于继承的描述正确的是(A C D)
A:一个子类只能继承一个父类
B: 子类可以继承父类的构造方法
C: 继承具有传递性
D: 父类一般具有通用性,子类更具体
24.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有(A)
package NowCoder;
class Test {public static void hello() {System.out.println("hello");}
}
public class MyApplication {public static void main(String[] args) {// TODO Auto-generated method stubTest test=null;test.hello();}
}
A: 能编译通过,并正确运行 正确答案
B: 因为使用了未初始化的变量,所以不能编译通过
C: 以错误的方式访问了静态方法
D: 能编译通过,但因变量为null,不能正常运行
25.对于以下代码段,4个输出语句中输出true的个数是(C)
class A{}
class B extends A{}
class C extends A{}
class D extends B{}
A obj = new D();
System.out.println(obj instanceof B);
System.out.println(obj instanceof C);
System.out.println(obj instanceof D);
System.out.println(obj instanceof A);
A: 1
B: 2
C: 3
D: 4
26.在Java中,以下数据类型中,需要内存最多的是(B)
A:byte
B: long
C: Object
D: int
27.以下代码的循环次数是(D)
public class Test {public static void main(String args[]) {int i = 7;do {System.out.println(--i);--i;} while (i != 0);System.out.println(i);}
}
A: 0
B: 1
C: 7
D: 无限次
28.关键字super的作用是(D)
A: 用来访问父类被隐藏的非私有成员变量
B: 用来调用父类中被重写的方法
C: 用来调用父类的构造函数
D: 以上都是
29.对于如下代码段,可以放入到横线位置,使程序正确编译运行,而且不产生错误的选项是(C)
class A{public A foo() {return this;}
}
class B extends A {public A foo(){return this;}
}
class C extends B {_______
}
A: public void foo(){}
B: public int foo(){return 1;}
C: public A foo(B b){return b;}
D: public A foo(){return A;}
30.(多选)下列可作为java语言标识符的是(A B C)
A: a1
B: $1
c: _1
d: 11
二、题解:
1.很多同学会错选为B:3 ;选择5的原因是,Case 2 后没有break,循环还在继续,直到遇见break才会结束循环。
2.略
3.x是非静态变量,不能被静态方法引用
4. int[ ]数组默认值为0,所以 arr[0] 是 0
5.本题考察对数组遍历的操作,循环体中,依次访问数组中第一个元素之后的每一个元素,并于第一个元素比较,如果小于第一个元素,将该元素赋值给temp,最后temp的值为数组中的最小元素
6.题解如下: 注意: (1)执行了if语段就不用执行 "i++; s = s + i;" (2) i 要跟循环条件进行比较
7. %f ===> 格式化输出浮点数
%s ===> 格式化输出字符串 (不知道用什么占位符,都可以用 %s)
%e ===> 格式化输出科学计数法表示的浮点数
%d ===> 格式化输出整数
8.略
9.Switch 支持的类型 :byte 、short 、int 、char 、String 、enum枚举
10.干扰选项是A;首先我们要知道 "||"表示逻辑或,即两者有一个直行通过即可。其次我们要知道 "++i"和"i++"的区别。
11. b=b+1,1默认为int类型,b自动转型为int与1做加法,结果是int类型的。把int类型赋给byte类型b.就报错了。顺便说一下,如果b=b+1改为b+=1就没错了。
12.同上
13.本题我们要明白 "++m"是先 "++",再比较;"m++"是先比较,后"++";
例如:m++ > 0 ===> 先比较m > 0 ? "hello","您好" ; 后 m = m++ = 1
14.A: 根据下标,获取字符串中的指定位置字符====> charAt()
B: 截取字符串 ====> subString()
C: 替换字符串 =====> replace()
D: 查找子字符串,返回子字符串在原字符串中的下标位置 ====> indexOf()
15. 没有开辟新的内存空间,所以都是对的
16.(1)局部变量没有默认值,要声明赋值后才可以使用 (2)成员变量有默认值 (3)当成员变量和局部变量重名时,局部变量优先
17.在Java中,String对象时不可变的,一旦创建字符串对象,其长度和内容都是不可变的。String字符串不可变原因:(1)String内部类的private final char[ ] 字符数组不可变(2)一旦创建,会产生新的对象,长度和内容也不可变
18.method1 不是静态方法,不能直接用类调用
19.略
20. B选项将字符串类型转化为数字,当字符串的格式不是整数形式的时候就会产生数字格式化异常了,就是那个NumberFormatException;C选项数组元素为null,还使用数组进行赋值,必会产生NullPointerException空指针异常;D选项流程的读写都需要抛出IOException,且IOException是编译时异常,所以以上三个描述都是正确的;A选项整数除以0会抛出一个ArithmeticException,但是此异常时,运行时异常,所以不是必须添加捕获异常的处理手段的,必须这个词描述的错误
21.输出结果的符号与被除数必须保持一致!!!例如:
public class Test {public static void main(String args[]) {int x = -5;int y = -12;System.out.println(y % x);//-2System.out.Prinln(3 % -2);//1System.out.Prinln(-3 % 2);//-1System.out.Prinln(-3 % -2);//-1}
}