习 题
一、选择题
1. 如下哪个字符串是Java中的合法标识符?( A )
A、fieldname B、super C、3number D、#number 2. Java中main()函数的返回值是什么类型? ( D )
A、String B、int C、char D、void
3. 下列哪些语句关于Java内存回收的说明是正确的? ( C )
A、程序员必须创建一个线程来释放内存 B、内存回收程序允许程序员直接释放内存 C、内存回收程序负责释放无用内存
D、内存回收程序可以在指定的时间释放内存对象 4. 以下关于继承的叙述正确的是( B )。
A、在Java中一个类只能实现一个接口 B、在Java中类只允许单一继承
C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口只允许单一继承 5. Java Applet中的paint()方法使用哪种类型的参数? ( A )
A、Graphics B、Graphics2D C、String D、Color
6. 在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。 A、private B、protected C、private protected D、public 7. 下面( B )函数是public void example( ){...}的重载函数? A、public void example( ){...}
B、public void example( int m ){...} C、public void example2( ){...} D、public int example ( ){...}
8. 在浏览器中执行applet 程序,以下选项中的( A )方法将被最先执行。
A、init() B、start() C、destroy() D、stop() 9. 有程序片段如下,以下表示式的结果为true的是( B )。
Float s=new Float(0.1f); Float t=new Float(0.1f); Double u=new Double(0.1); A、s= =t B、s.equals(t) C、u.equals(s) D、t.equals(u)
10. 关于异常的含义,下列描述中最正确的一个是( C )。 A 程序编译错误 B 程序语法错误 C 程序运行时的错误 D 程序编译和运行时发生的错误 11. 类 Panel 默认的布局管理器是( B )。
A、BorderLayout
B、FlowLayout
C、GridLayout D、CardLayout
12. 下面哪个方法与applet的显示无关? ( B )
A、update() B、draw() C、repaint() D、paint() 13. 已知如下代码:
public class Test{
public static void main ( String arg[] ) {
long a[] = new long[10]; System.out.println ( a[6] ); } }
请问哪个语句是正确的? ( B )
A 程序输出 null B 程序输出 0 C 因为long[]数组声明不正确,程序不能被编译
D 程序被编译,但在运行时将抛出一个ArrayIndexOutOfBoundsException异常 14. Java语言不是( B ) ..
A、高级语言
C、结构化设计语言
public class ArrayTest {
public static void main(String args[]) { try {
int x[]=new int[-5];
System.out.println(\此行将无法被执行!\ } catch(NegativeArraySizeException e) {
System.out.println(\数组下标不能为负数。\ } } }
B、编译型语言
D、面向对象设计语言
15. 关于以下程序段的说明正确的是 ( C )
A、编译通过,输出: 此行将无法被执行! B、编译通过,输出: 此行将无法被执行!
exception: 数组下标不能为负数。 C、编译通过,输出:
exception: 数组下标不能为负数。 D、编译不能通过
16. Java源文件和编译后的文件扩展名分别为( B )。
A、.class和 .java B、 .java和 .class C、.class和 .class D、 .java和 .java 17. 以下有关构造函数的说法,正确的是:(A )。 A、一个类的构造函数可以有多个 B、构造函数在类定义时被调用
C、构造函数只能由对象中的其它方法调用
D、构造函数可以和类同名,也可以和类名不同
18. 为类Employee中的一个无形式参数且无返回值的方法method书写方法头,以便使用
类名Employee作为前缀就可以调用它(即可以通过类名调用方法method),该方法头的形式为( A )。
A、static void method( ) B、public void method( ) C、final void method( ) D、abstract void method( ) 19. 下列代码的执行结果是: ( C )。
public class Test5{
public static void main(String args[]){ String s1=new String(\ String s2=new String(\ System.out.print(s1==s2); System.out.print(\
System.out.println(s1.equals(s2)); } }
A、true,false C、false,true
B、true,true D、false,false.
D、sizeof
20. 下列不是Java关键字的是( D )。
A、 final B、 finally C、null
21. 以下( C )是java.io包中的一个兼有输入输出功能的类。
A、Object B、Serializable C、RandomaccessFile D、java.io中不存在这样的类
22. 下面哪个语句正确地声明一个整型的二维数组? ( D )
A int a[][] = new int[][];
B int a[100][100] = new int[][]; C int []a[] = new int[100][100]; D int a[][] = new int[100][100];
23. 编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名
为( B )。
A .java B.class C .html D .exe
24. 为读取的内容进行处理后再输出,需要使用下列哪种流? ( D )
A Filestream B Pipestream C Randomstream D Filterstream 25. 下列方法中可以用来创建一个新线程的是。( C )
A 实现java.lang.Runnable 接口并重写 start()方法 B 实现java.lang.Runnable 接口并重写 run()方法 C 继承java.lang.Thread 类并重写 run()方法 D 实现java.lang.Thread 类并实现 start()方法 26. 给出如下初始化语句
String s1=new String(“Hello”); String s2=new String(“there”); String s3=new String();
以下哪种操作是合法的? ( A ) A s3=s1+s2; B s3=s1-s2; C s3=s1&s2; D s3=s1&&s2;
27. 容器Panel和Applet缺省使用的布局编辑策略是( B )
A BorderLayout
B FlowLayout
C GridLayout D CardLayout 28. 给出如下代码:
class Test{ private int m;
public static void fun() { // some code... } }
如何使成员变量m 被函数fun()直接访问? ( C ) A将private int m 改为protected int m B将private int m 改为 public int m C将private int m 改为 static int m D将private int m 改为 int m
29. 以下有关类的继承的说明中正确的是:( D )
A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 B子类只能继承父类的方法,不能继承父类的属性
C子类只能继承父类的非私有属性,不能继承父类的方法 D子类不能继承父类的私有属性
30. 以下语句有语法错的是:( A )
A int x=1;y=2;z=3 B for (int x=10,y=0;x>0;x++); C while (x>5); D for(; ;); 二、简答题
1、 请说明this,super,final各自的作用。
this:①指代调用方法的当前对象;②在构造函数内使用this用于指代另外一个构造函数。 super:提供了一种调用父类构造函数的方法。 final:使得某个变量值只能被引用,而不能修改。 2、 试解释方法重构(方法覆盖)和方法重载的区分。
①方法的覆盖出现在父类与子类之间,并且方法的特征要完全相同。
②方法的重载可以出现在一个类中,也可以分别出现在父类与子类中,方法的特征一定不完全相同。
3、 请解释面向对象程序设计相关的几个概念:继承、 多态、 重载。
继承:将相关类组成层次结构,允许新类从已存在的类中派生,通过保留它们的属性(即实例变量)和方法,并根据自己的要求添加新的属性的方法。 多态:接口的多种不同的实现方式。
重载:在一个类定义中,可编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一方法。 4、 请说明抽象类和接口的异同点。
抽象类:一种类,它不能实例化为一个对象,而只表示一种抽象的概念,继承它的子类可以对其进行具体实现,这种类中往往包含了抽象方法。
接口:就是一系列常量和空方法的集合,它提供了多个类共有的方法,但不限制每个类如何实现这些方法。 相同点:
①二者都包含空方法,都必须在实现接口或继承抽象类的子类中具体实现这些方法。 ②由于二者都包含空方法,所以不能用new关键字来创建这两种类型的对象。 ③类之间具有继承关系,接口之间也可以具有这种关系,一个接口可以继承一个或多个接口。 ④接口和类一样可以具有public属性。在interface前加上public关键字,表示各个包中的类均可以实现这个接口,反之,只有同一个包中的类才可以实现这个接口。 不同点:
①抽象类在定义空方法时,其名称前必须加abstract关键字,而在接口中不需要。
②在抽象类中,除空方法外,还可以定义实例变量和非空方法;而在接口中,只能定义常量和空方法。
③接口允许多继承。一个接口可以继承多个接口,实现接口的类也可以同时实现多个接口,只要在这个类中对每个接口的方法都有具体的实现,但Java的类仅支持单继承。 5、 实例变量与局部变量的区别
(仅供参考)java期末考试样卷答案解析



