A
不定项选择题
1.下面关于Java语言中方法的说法错误的是:
A.方法调用时参数类型必须符合方法的定义
B.参数传递是值传递的方式
C.如果方法没有返回值必须声明返回为void
D.如果方法定义为返回void,则方法中不能出现return语句
2.指出下列程序运行的结果
public class Example{
String str=new String("welcome");
char[]ch={‘a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(Arrays.toString(ex.ch));
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
A.welcome and abc
B.welcome and gbc
C.test ok and abc
D.test ok and gbc
3.关于Java对象的删除,下列说法正确的是:
A.必须由程序员完成对象的清除
B.Java把没有引用的对象作为垃圾收集起来并释放
C.只有当程序中调用System.gc()方法时才能进行垃圾收集
D.Java中的对象都很小,一般不进行删除操作
4.下列代码编译或运行的结果是:
public class Foo {
public String doit(int x, int y) {
return "a";
}
public String doit(int[] vals) {
return "b";
}
public static void main(String[] args) {
Foo f=new Foo();
System.out.println(f.doit(4, 5));
}
}
A.代码public String doit(int[] vals) {行,编译出错
B.代码System.out.println(f.doit(4, 5));行,抛出运行时异常
C.输出:a
D.输出:b
5.请看下列代码:
class Inner {
private int x;
public void setX(int x) {
this.x = x;
}
public int getX() {
return x;
}
}
class Outer {
private Inner y;
public void setY(Inner y) {
this.y = y;
}
public Inner getY() {
return y;
}
}
public class Gamma {
public static void main(String[] args) {
Outer o = new Outer();
Inner i = new Inner();
int n = 10;
i.setX(n);
o.setY(i);
System.out.println(o.getY().getX());
}
}
运行上述代码,要求输出“100”,那么处应填入的代码是:
A.n = 100;
B.i.setX( 100);
C.o.getY().setX( 100);
D.i = new Inner(); i.setX( 100); o.setY( i);
6.关于下列代码说法正确的是:
public class Foo {
public int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
Foo foo = null;
System.out.println(foo.add(10, 20));
}
}
A.编译错误
B.正常运行,但无结果输出
C.运行输出:30
D.运行时抛出NullPointerException异常
7.下列说法正确的有:
A.class中的constructor不可省略
B.constructor必须与class同名,但方法不能与class同名
C.constructor在一个对象被实例化时执行
D.一个class只能定义一个constructor
8.关于 Java 中继承的特点,下列说法正确的是:
A.使类的定义复杂化
B.Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的
C.子类继承父类的所有成员变量和方法,包括父类的构造方法
D.不可以多层继承,即一个类不可以继承另一个类的子类
9.请看下列代码:
class ClassA {}
class ClassB extends ClassA {}
class ClassC extends ClassA {}
public class Test{
public static void main(String[] args) {
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2