一、选择题(共20分)
1.下列输出结果是(        )
int  a = 0 ;
while ( a < 5 ) {
    switch(a){
    case 0:
    case 3 : a = a + 2;
    case 1 :
    case 2 : a = a + 3;
    default : a = a + 5;  }
}
System.out.print ( a ) ;
答案:10
解析:由于每个case后面没有使用break结束循环,导致程序从上往下逐条运行。
2.被声明为private,protected及public的类成员,在类外部(   )
    A)只能访问到声明为protected和public的成员   B) 都可以访问
    C)只能访问声明为public的成员                    D)都不能访问
答案:A
解析:private只能被类内部访问,子类(未在父类内部)可以访问父类protected类型成员,其他类可以访问其public类型成员。
3.在Java语言中,下列关于类的继承的描述,正确的是(    )。
A)一个类可以继承多个父类
B)一个类可以具有多个子类
C)子类可以使用父类的所有方法
D)子类一定比父类有更多的成员方法
答案:B
解析:A错,一个类只能有一个父类;C错,父类的私有方法就不可被子类访问并使用;D错,继承关系是对父类功能的扩展,根据实际情况完全可以只扩展1个功能,并不意味着成员方法比父类多。
4.类Teacher和Student都是类People的子类
  People p;
  Teacher t;
  Student s;
  若p,t和s都是非空值,并且new时声明的都是本类;
  if(t  instanceof  People) { s = (Student)t; }
  这个语句导致的结果是什么?(    )
    A) 表达式合法
    B) 编译时非法
    C) 将构造一个Student对象
D) 编译时合法而在运行时可能非法
答案:B
解析:instanceof操作符用于判断左边的引用对象是否是右边的类,或者其子类、实现类的实例。此题中的if语句的判断没有问题,将返回真。但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Student对象,即使这两个类有共同的父类。如
果是将t转换为一个Person对象则可以,而且不需要强制转换。这个错误在编译时就可以发现,因此编译不能通过。
5.下列值不为true的表达式有(        )。
A)"tomy" = = "tomy"
B)"tomy".equals("tomy")
C)"tomy" = "tomy"
D)"tomy".equals(new String("tomy"))
答案:C
解析:赋值符号“=”的左端必须是一个变量,显然C选项在编译时就会出错,故其值不可能为true。
6.关于接口哪个正确?  (
    A)接口和抽象类是同一回事
    B)一个类只能实现一个接口
    C)接口间不能有继承关系
D)实现一个接口必须实现接口的所有方法
答案:D
解析:A错,接口是一种规范机制,他作为系统与外部交互的窗口,它既规定了实现着必须向外提供哪些服务,也规定了调用者可以调用哪些服务,以及如何调用这些服务。抽象类是作为系统中多个子类的父类,体现的是一种模板设计。B错,一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承的不足。C错,接口支持多继承,一个接口可以有多个直接父接口,与类继承相似,子接口扩展某个父接口,将会获得父接口里的所有抽象方法、常量。
7.下列关于Java语言特性的描述中,错误的是(  )
A)支持多线程操作
B)JAVA程序与平台无关
C) 支持单继承和多继承
D)JAVA程序可以直接访问Internet上的对象
答案:C
解析:Java是一门单继承语言,虽然一个类可以实现多个接口,在表面上表现出“多继承”的样子,但那并不是真正意义上的“多继承”,只能称作一个类实现了多个接口。
8.以下关于抽象类和接口的说法错误的是(        )
A)抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。但是一个类却可以实现多个接口。T
B)在抽象类中可以没有抽象方法T
C)实现抽象类和接口的类必须实现其中的所有方法,除非它也是抽象类。接口中的方法都不
能被实现T
D)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。T
E)接口中的方法都必须加上public关键字。
答案:E
解析:接口中的成员在被定义时完全可以省略访问控制符,系统会默认使用public访问控制修饰符。如果非要指定访问控制符,则只能使用public访问控制修饰符。
9.下列Java语言中可用的注释符,其中错误的是(    )
A)//      B) /*...*/    C) /**...*/        D) /*
答案:D
解析:“//”是单行注释符,“/*........*/”是多行注释符,“/**.......*/”是文档注释符。D选项为非法符号。
10.下列关于变量作用域的描述,错误的是(  )
A) 在方法中作用域可嵌套,在嵌套的作用域中可以定义同名变量。
B) 在类中定义的变量的作用域在该类中的方法内是可以使用的
C) 在方法中定义的变量的作用域仅在该方法内
D) 在某个作用域定义的变量,仅在该作用域内是可见的,而在该作用域外是不可见的。
答案:A
解析:方法中的作用域可以嵌套,但嵌套的作用域中不能出现同名变量否则会出现名命冲突。
11. 类与对象的关系是(         )。
A) 对象是类的子类    
B) 对象是类的抽象 
    C) 类是对象的抽象    
D) 类是对象的具体实例 
答案:C
解析:对某一类对象的属性和功能的抽象便得到了类,而一个对象便是某一个类的具体化或实例化。
12.在类的修饰符中,规定只能被同一包类所使用的修饰符是(  )
A) public      B) 默认 C)  final        D) abstract
答案:B
解析:用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问。默认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。final 修饰符是用来修饰类、变量和方法的,用来表示它所修饰的类、方法和变量不可再改变。abstract是定义抽象类或抽象方法时使用的修饰符。
13.下列关于类的继承性的描述中,错误的是  (    ) 
A) 继承是在已有的基础上生成新类的一种方法
B) 子类继承父类的所有成员
C) Java语言要求一个子类只有一个父类
D) 父类中成员的访问权限在子类中将被改变
答案:D
解析:子类对从父类继承来的成员只有重写或使用的权限,并不能修改父类成员的访问权限。
14.下列选项中关于Java中super关键字的说法正确的是(        )。
A)super关键字是在子类对象内部指代其父类对象的引用
B)super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C)子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D)子类通过super关键字只能调用父类的属性,而不能调用父类的方法
答案:A
解析:super关键字只能指代直接父类对象的引用,因此既可以调用直接父类的属性,也可以调用父类方法。
15.以下对于方法覆盖(overriding)的说法不正确的有(        ) 。
A) 方法覆盖发生在同一类中
B) 方法的覆盖发生在子类型中
C) 参数一定要一样
D) 方法名一定要一样
答案:A
解析:方法覆盖即重写,该现象只能出现在子类继承父类后,子类重写父类方法时发生。
16.下面对对象概念描述错误的是:(        )
A) 操作是对象的动态属性
B) 任何对象都必须有继承性
C) 对象间的通讯靠消息传递
D) 对象是属性和方法的封装体
答案:B
解析:比如数字2,它是整型类对象实例,确实是一个对象,但它却无法被继承,故没有继承性。因此,对象不都必须有继承性。
17.下列关于字符串的描叙中错误的是(    )(选择两项)
A)字符串是对象
B)String对象存储字符串的效率比StringBuffer高
C)可以使用StringBuffer sb="这里是字符串"声明并初始化StringBuffer对象sb
D)String类提供了许多用来操作字符串的方法:连接,提取,查询等equals()方法
答案:BC
解析:String既属于引用类型也属于基础数据类型,而且内容是静态的,在通常情况效率高些,  
  但如果涉及到连接字符串的时候,对于String每次连接都要重新分配内存,相比之下StringBuffer效率在此时反而高一些,故B选项错误。C选项的声明并初始化sb的命令应为:
StringBuffer sb =new StringBuffer("xiajsiaxbai");   
18.对象的特征在类中表示为变量,称为类的(        )。
A)对象
B)属性
C)方法
D)数据类型
答案:B
解析:类中的成员在类中表现出什么样的特征就相当于类的对应成员。变量在类中只可能做属性。
19.应用程序的main方法中有以下语句,则输出的结果是 (  )。
        String s = "xxx#678#9123#zzzzz";
        int n = s.indexOf("#");
            int k = s.indexOf("#", n+1);
        String s2 = s.substring(n+1, k+4);
        System.out.println(s2);   
答案:678#912
解析:indexof(s1)表示返回字符“s1”的索引。indexof(s1 , index)表示查字符串中的字符 s1 从第 index 个开始查,返回所在字符的索引。substring(a, b)表示截取包含索引a处的字符开始到不包含索引b处的字符为止的字符串。故n=3,k=7。从而S2=“678#912”。
20.覆盖与重载的关系是 (  )   
A)  覆盖方法可以不同名,而重载方法必须同名
B) 覆盖与重载是同一回事
C) final修饰的方法可以被覆盖,但不能被重载
D) 覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
答案:D
解析:此处的覆盖表示重写,重写发生在继承关系中即父类与子类之间。函数名相同,函数的参数列表不同(包括参数个数和参数类型),返回类型可同可不同的现象叫重载。
21.在Java中,下面对于构造函数的描述错误的是(        )(选择两项)
A)类不一定要显式定义构造函数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。