1、Java 期末复习题一、判断题1、在 main 方法中可以直接调用非静态的方法。 ( F )2、方法重载就是一个类中有多个同名但有不同形参和方法体的方法。 ( T )3、一个 Java 源程序可有多个类,但只仅有一个 public 类,而且源程序名与 public 类名相同。 ( T )4、Java 的源代码中定义几个类,编译结果就生成几个以.class 为后缀的字节码文件。(T)5、方法中的形参可以和方法所属类的属性同名。 ( T )6、Java 类中不能存在同名的两个成员函数。 ( F ) /可以存在同名的方法,但是参数不能相同,这样的关系体现了 Java 中的多态(重载)7、可以用 ne
2、w 来创建一个类的实例,即“对象”。 ( T )8、Java 中类的构造函数只能有一个。 ( F )/错误,可以重载.如果没有,会默认生成 xxx()9、类的静态变量被该类的所有对象共享。 ( T )10、不管定义与否,任何类都有一个不带参数的构造方法。 ( F )11、一个类可以访问另一个类的私有成员。 ( F )12、构造方法没有返回值,因此在定义构造方法时,其返回值类型必须声明为 void。 ( F )13、对于类变量,可以通过类名直接访问,也可以通过该类的对象访问。 ( T )14、构造方法的名字必须与类名相同。 ( T )15、一个类的私有变量可以在同一个包的不同类中使用。 ( F
3、)16、实例变量不能在类方法中直接引用,而类变量可以在实例方法中直接引用。 ( T )17、抽象类可有构造方法,因此也能用 new 进行实例化。 ( F )18、一个类可继承多个父类,实现多个接口。 ( F )19、用 final 修饰的类不能被继承。 ( T )20、接口中的成员变量全部为常量,方法为抽象方法。 ( T )21、接口无构造器,不能有实例,也不能定义常量。 ( F )22、java 的类不允许嵌套定义。 ( F )23、在接口中所有的方法都是抽象方法,所以必须在方法定义之前加上 abstract 关键字( F)24、抽象类中不能包含 final 修饰的方法。 ( T )25、子
4、类可以继承父类所有的成员变量及成员函数。 ( F)26、接口可以被另一个接口继承。 ( T )27、接口中只能定义符号常量和抽象方法。 ( T )28、final 类不能派生子类,final 方法不能被覆盖。 ( T )29、如果类 A 的一个方法 m 的访问权限是默认的,则 m 可以被同一个包中的其他类访问,也可以被其它包中 A 的子类访问。 ( F )30、所有的类都可以被继承。 ( F )31、java 中是单继承,但一个类可以实现多个接口。 ( T )32、如果一个类中包含抽象方法,则这个类也必须定义为抽象类。 ( T )33、如果在子类中改写从父类继承的方法,则子类中定义的访问权限不
5、能低于父类中该方法的访问权限。 ( T )34、一个接口中的所有方法都是抽象的。 ( T)35、一个抽象的类不能直接用 new 命令创建对象。 ( T )36、一个子类中可以定义与父类中名字相同,而参数不同的方法,此时子类的方法会改写从父类继承来的方法。 ( F )/重写的条件是 子类定义的方法和父类的方法有相同的方法名,相同的参数列表,以及相同的返回值,显然问题不符合以上条件,所以错误37、JFrame,JPanel,JApplet 和 JButton 四种组件都属于容器组件。 ( F )38、BorderLayout 是面板的缺省布局管理器。 ( F )39、BorderLayout 最多
6、可以使用 5 个组件。 ( T )40、一个面板(JPanel)不能被加入另一个面板(JPanel)中。 ( F )41、菜单需要一个 JMenuBar 对象,以使他们能被添加到 JFrame。 ( T )42、标签(JLabel)可以在屏幕上显示一个字符或一幅图片。 ( T )43、BorderLayout 是容器 javax.swing.JFrame 默认的布局管理器。 ( T )44、JTextArea 可以用来接收多行文本的输入。 ( T )45、在 Java 坐标系统中,X 值从左向右增加。( T )46、BorderLayout 布局管理器把组件排列在北、南、东、西和中间区域。(T
7、 )47、边界布局管理器(BorderLayout)把容器分成 5 个区域,每个区域只能放一个组件。(T)48、一个组件可以注册一个或多个事件监听器。 ( T )二、选择题1、以 public 修饰的类如:public class fish 则 fish( A )A)可被其它程序包中的类使用 B)仅能被本程序包中的类使用C)不能被任意其它类使用 D)不能被其它类继承2、下述哪个说法是不正确的?( A )A) 局部变量在使用之前无需初始化,因为有该变量类型的默认值B) 类成员变量由系统自动进行初始化,无需初始化C) 参数的作用域就是所在的方法D) for 语句中定义的变量,当 for 语句执行完
8、时,该变量就消亡了3、使用如下哪个保留字可以使只有在定义该类的包中的其他类才能访问该类?( D )A、abstract B、private C、protected D、不使用保留字4、Java 源文件和编译后的文件扩展名分别为( B )A).class 和 .java B).java 和 .classC).class 和 .class D).java 和 .java5、下列说法中,不正确的是( A ) A) 一个 java 源程序编译通过后,得到的结果文件数也只有一个。B) 一个 java 源程序经过编译后,得到的文件的扩展名一定是.class。C) 一个 java 源程序只能有一个 publ
9、ic class 类定义,且源文件的名字与 public class的类名相同,扩展名必须是.java。D) 一个 java 源程序可以包含多个类。6、System.out.print(“1”+2)打印到屏幕的结果是( B )A) 3 B) 12 C)1+2 D) 47、假设 int x=4,y=100,下列语句的循环体共执行几次?( B )while(y/x3)if(y%x3) x=x+1; elsey=y/x;A) 1 次 B) 2 次 C) 3 次 D) 4 次8、下列说法中,不正确的是( D )A、一个 java 源程序文件中,只能有一个 public 类。B、一个 java 源程序文
10、件中,只能有一个 package 语句。C、一个 java 源程序文件中,可以有多个 import 语句。D、一个 java 源程序文件中,只能有一个类中可以有 main 方法。9、阅读下列代码段,选出该代码段的正确的文件名( D )。class Avoid methodl()Systemoutprintln(”methodl in class A”):public class Bvoid method2()System.out.println(”method2 in class B”):public static void main(String args)System.out.printl
11、n(”main()in class B”):A、A .java B、A.class C、B.class D、B.java10、编译下面源程序会得到哪些文件?( C )class A1class A2Public class BPublic static void main(String args )A、只有 B.class 文件 B、只有 A1.Class 和 A2.class 文件 C、有 A1.class、A2.Class 和 B.class 文件 D、编泽不成功11、关于方法 main()的说法哪个正确?( C)A方法 main()只能放在公共类中Bmain()的头定义可以根据情况任意更
12、改C一个类中可以没有 main()方法D所有对象的创建都必须放在 main()方法中12、下列关于类、包和源文件的描述中,不正确的一项是( D )。A、一个包可以包含多个类 B、一个源文件中,可能有一个公共类C、属于同一个包的类在默认情况下可以相互访问 D、系统不会为源文件创建默认的包13、下述哪一组方法,是一个类中方法重载的正确写法? ( A )A、int addValue( int a, int b )return a+b; float addValue ( float a, float b) return a+b;B、int addValue (int a, int b )value=a
13、+b; float addValue ( int a, int b) return (float)(a+b);C、int addValue( int a, int b )return a+1; int addValue ( int a, int b) return a+b;D、int addValue( int a, int b ) return a+b;int addValue ( int x, int y ) return x+y;14、关于方法的重载,下列说法哪一个是正确的? ( A )A、方法的重载是指一个类中多个方法使用相同的名字,但参数不同。B、方法的重载是指一个类中多个方法使用相
14、同的名字,且参数相同。C、方法的重载是指子类和父类中两个方法使用相同的名字,但参数不同。D、方法的重载是指子类和父类中两个方法使用相同的名字,且参数相同。15、下列关于类、包和源文件的说法中,错误的一项是( D )。A、一个文件可以属于一个包 B、一个包可包含多个文件C、一个类可以属于一个包 D、一个包只能含有一个类16、下列关于作用域的说法中,正确的一个是( B)。A、不同方法中声明的不同变量,可以互相访问B、在不同方法中可以声明相同数据类型的同名局部变量C、在同一个类中可以声明相同数据类型的同名类变量 D、在同一个程序块中可以声明相同数据类型的同名变量17、下列描述中不正确的一项是( B
15、)。A、import 语句告诉 Java 用户需要哪个包(package)中的类B、所有的类必须实例化,才能调用它的数据成员和方法C、package 语句用于将源文件存入所指定的包中D、System 类不可能实例化,它的所有方法都是通过类变量来调用的18、为了区分重载多态中同名的不同方法,要求( A )。A、形式参数个数或者类型不同 B、返回值类型不同C、调用时用类名或对象名做前缀 D、形式参数名称不同19、下列说法中,正确的一个是( A )。A、类成员变量在使用之前可以不初始化 B、局部变量在使用之前可以不初始化C、参数变量在使用之前必须初始化 D、所有的变量在使用之前必须初始化20、下面哪
16、一项的方法调用能填入程序中的横线处?( C )class Ex7 static void method1() System.out.println(“in Ex7“);class Ex8 void method2() System.out.println(“in Ex8“);public class Ex9 public static void main(String args) Ex9 e1 = new Ex9();e1.method3();public void method3() Ex7 e2 = new Ex7();Ex8 e3 = new Ex8();A、 method1( ); B
17、、Ex7.method1( ); C、Ex7.method1( ); D、e2Method1( );method2( ): Ex8.method2( ); e3.method2( ); Ex8.method2( );21、若编译和运行下列代码,出现的结果将是 ( C )class MyClassint i = 0;public int myMethod(int x)return i+x;public static void main(String args) System.out.println(myMethod(10);A、0 B、10 C、编译出错 D、 以上答案都不对22、为 AB 类的
18、一个无形式参数无返回值的方法 method 书写方法头,使得用类名 AB 作为前缀就可以调用它,该方法头的形式为( A )A) static void method( ) B) public void method( ) C) final void method( ) D) abstract void method( )23、下面程序中类 ClassDemo 中定义了一个静态变量 sum,分析程序段的输出结果。( C )class ClassDemo public static int sum=1;public ClassDemo()sum=sum+5;class ClassDemoTestp
19、ublic static void main(String args) ClassDemo demo1=new ClassDemo();ClassDemo demo2=new ClassDemo();System.out.println(demo1.sum);A) 0 B) 6 C) 11 D) 224、给出如下的程序,A-E 选项中与构造方法 ConstOver 重载的两个构造方法是 AC 。public class ConstOver public ConstOver (int x, int y, int z) A.ConstOver ( ) B.Protected int ConstOv
20、er ( ) C.Private ConstOver (int z, int y, byte x) D.public Object ConstOver (int x, int y, int z) E.public void ConstOver (byte x, byte y, byte z) 25、对象使用时,下面描述错误的是( B ) (A)通过“.”运算符调用成员变量和方法 (B)通过成员变量的访问权限设定限制自身对这些变量方法的调用 (C)将一个对象申明为类的成员时,必须在使用前为其分配内存 (D)在方法中使用对象作为参数时,传递的是对象的地址 26、给出如下代码:class Testp
21、rivate 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 m27、MAX_LENGTH 是 int 型 public 成员变量, 变量值保持为常量 100,用简短语句定义这个变量。( C )(A) public int MAX_LENGT
22、H=100; (B) final int MAX_LENGTH=100; (C) final public int MAX_LENGTH=100; (D) public final int MAX_LENGTH=100.28、构造方法何时被调用( B ) (A)类定义时 (B)创建对象时 (C)调用对象方法时 (D)使用对象的变量时29、指出下列程序运行的结果 ( B )public class Example String str=new String(“good“); charch=a,b,c; public static void main(String args) Example ex
23、=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+“ and “); System.out.print(ex.ch); public void change(String str,char ch) str=“test ok“; ch0=g; (A) good and abc (B) good and gbc (C)test ok and abc (D) test ok and gbc 30、给出下面代码段 1) public class Test 2) int m, n; 3) public Test() 4) p
24、ublic Test(int a) m=a; 5) public static void main(String arg) 6) Test t1,t2; 7) int j,k; 8) j=0; k=0; 9) t1=new Test(); 10)t2=new Test(j,k); 11) 12) 哪行将引起一个编译时错误?( D ) (A) line 3 (B) line 5 (C) line 6 (D) line 10 31、函数重载是指 (A ) (A)两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 (B)两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 (
25、C)两个以上的函数名字不同,但形参的个数或类型相同 (D)两个以上的函数取相同的函数名,并且函数的返回类型相同 32、对于下列代码: public class Parent public int addValue( int a, int b) int s; s = a+b; return s; class Child extends Parent 下述哪些方法可以加入类 Child ( D )(A) int addValue( int a, int b )/ do something. (B) public void addValue (int a, int b )/ do something
26、. (C) public int addValue( int a )/ do something. (D) public int addValue( int a, int b )throws MyException /do something. 33、对于下列代码: 1) class Person 2) public void printValue(int i, int j) /. 3) public void printValue(int i)/. 4) 5) public class Teacher extends Person 6) public void printValue() /.
27、 7) public void printValue(int i) /. 8) public static void main(String args) 9) Person t = new Teacher(); 10) t.printValue(10); 11) 第 10 行语句将调用哪行语句?( D )(A) line 2 (B) line 3 (C) line 6 (D) line 734、如果在一个类中定义了如下两个方法,则选项中正确的说法是( A )void out() System.out.println();void out(int x) System.out.println(x)
28、;A、这种定义是正确的,是方法的重载。B、这种定义是正确的,是方法的改写。C、此种定义是错误的,一个类中不能定义两个名字相同的方法。D、此种定义是错误的,第二个方法应该和第一个方法的参数相同。35、下面哪一项是 Java 实现动态多态性的具体手段( B )A) 重载; B) 覆盖(重写) C) 接口 D) 抽象类36、下列说法哪个是正确的? ( C )A、子类不能定义和父类同名同参数的方法B、子类只能继承父类的方法,而不能重载C、重载就是一个类中有多个同名但有不同形参的方法D、子类只能覆盖父类的方法,而不能重载37、下列哪个类声明是正确的? ( D )A)abstract final clas
29、s HI B)abstract private move() C)protected private number; D)public abstract class Car 38、下面的是关于类及其修饰符的一些描述,不正确的是( C )。A、abstract 类只能用来派生子类,不能用来创建 abstract 类的对象B、abstract 不能与 final 同时修饰一个类C、final 类不但可以用来派生子类,也可以用来创建 final 类的对象D、abstract 方法必须在 abstract 类中声明,但 abstract 类定义中可以没有 abstract 方法39、下列输出的结果是(
30、 A )。class AAvoid Show( )System.out.println(“类 AA”);class BB extends AA void Show( )Systemoutprintln(“类 BB”);public class ex7public static void main(String args )AA a=new AA( );BB b=new BB( );a.Show( );b.Show( );A、类 AA B、类 BB C、类 BB D、类 AA类 BB 类 AA 类 BB 类 AA40、下列关于接口的说法不正确的是 ( C )A、接口所有的方法都是抽象的B、接口所
31、有的方法一定都是 public 属性的C、用于定义接口的关键字是 implementsD、接口是 JAVA 中的特殊类,包含静态变量和抽象方法41、下列说法中,哪一个是正确的? ( C )A、抽象类中定义的方法一定是抽象的。B、抽象类中一定存在抽象的方法。C、抽象类中可以没有抽象方法。D、抽象类的子类一定要实现抽象类中的抽象方法。42、假定有程序段: ( D )class SupperClass public int addValue( int a, int b) return a+b; class SubClass extends SuperClassint value;/此处插入代码下述哪
32、个方法可以插入到类 SubClass 中而不会出现编译错误?A、int addValue( int a, int b )return a+b+1; B、public long addValue (int a, int b )value=a+b+1; C、protected int addValue(int a, int b )return a+b+1; D、public int addValue( int a, int b ) return a+b+1;43、若编译和运行下列代码,其结果将是 ( C )class Circle double radius=1;public Circle(dou
33、ble r)radius = r;public double area( )return 3.14*radius*radius;public class MyTestpublic static void main(String args) Circle c1=new Circle();System.out.println(c1.area();A、3.14 B、0 C、编译出错 D、 以上答案都不对44、下列说法中不正确的是 ( A )A、如果一个方法中定义的变量名与该方法所在类的成员变量同名,则在该方法中无法访问同名的类成员变量。 B、在 java 接口中定义的方法一定是抽象方法。 C、jav
34、a 接口中不能定义变量。 D、java 接口没有构造方法。45、有程序如下class SuperClassprivate int i=10;void printI()System.out.println (i);class SubClass extends SuperClassint i=20;public void printA()super.printI();class Testpublic static void main(String args) SubClass c1=new SubClass();c1.printA();编译并运行程序,其结果将是 ( A )A、10B、20C、编译
35、出错D、046、用 abstract 定义的类( D )A)可以被实例化 B)不能派生子类C)不能被继承 D)只能被继承47、如果任何包中的子类都能访问父类中的成员,那么应使用哪个限定词( C ) (A)public (B)private (C)protected (D)default 48、下面的代码合法的是: ( B )A) public abstract method();B) public abstract void method();C) public abstract void method() ;D) public void method() implements abstrac
36、t;49、以下是接口 I 的定义:interface Ivoid setValue(int val);int getValue();以下哪个代码能通过编译?( C )A) class A extends Iint value;void setValue(int val)value=val;int getValue()return value;B) class B implements Iint value;void setValue(int val)value=val;C) interface C extends Ivoid increment( );D) interface D implem
37、ents Ivoid increment();50、下列关于接口和抽象类的说法不正确的是?( A ) A) 接口也有构造方法B) 实现接口时,需对接口中的所有方法都要实现C) 抽象类也有构造方法 D) 抽象类可以派生出子类51、对于下列代码: public class SupperClass public int sum( int a, int b) return a+b; class SubClass extends SupperClass 下述哪个方法可以加入类 SubClass? ( D )A) int sum ( int a, int b ) return a+b; B) public
38、 void sum (int a, int b ) return ; C) public float sum ( int a, int b) return a+b; D) public int sum ( int a, int b ) return a+b;52、对于下列代码: public class Parent public int addValue( int a, int b) int s; s = a+b; return s; class Child extends Parent 下述哪些方法可以加入类 Child? ( D )A) int addValue( int a, int
39、b )/ do something. B) public void addValue (int a, int b )/ do something. C) public int addValue( int a )/ do something. D) public int addValue( int a, int b ) /do something.53、下列说法中,错误的一项是( C )。A、内部类是被定义于另一个类中的类B、使用内部类实现监听器,在编程时比较容易实现C、内部类对象可以访问外部类的成员方法和变量,包括私有成员D、由于内部类定义于另一个类,因此不适用于 AWT 的事件处理机制54、
40、下列说法哪个是不正确的? ( B )A、一个组件可以注册多个事件监听器 B、一个监听器只能监听一个组件 C、一个组件可以引发多种事件 D、一个监听器可以监听处理多种事件55、下面说法错误的是( D )A) 单击 JCheckBox (复选框)产生 ItemEvent 事件,并由 ItemListener 处理。B) 处理 JButton 和 JTextField 事件监听器接口都是 ActionListener。C) 一个面板(JPanel) 可以加入到另一个面板(JPanel)中。D) 在 BorderLayout 中,添加到 NORTH 区的两个按钮将并排显示。56、下列哪一个方法是自动调
41、整窗口的大小 ( C )A、setSize()B、setDefaultClose()C、pack()D、setVisible()三、程序阅读题1、阅读下面的程序:6class test public static void main(String args) int i = 1;int All = 0;for (;i=10;i+)if (i%6=0) break;if(i%2=0) i=i+2;continue;All = All + i;System.out.println(All);上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?2、写出下列程
42、序代码的运行结果:HelloYavapublic class ExampleString str=new String(“Hello“);char ch=J,a,v, a;public static void main(String args)Example ex=new Example();ex.change(ex.str,ex.ch);System.out.println(ex.str);System.out.println(new String(ex.ch);public void change(String str,char ch)str=“World“;ch0= Y;3、仔细阅读下面
43、的程序代码,编译和运行后,请写出该程序的输出结果。Game constructorBoardGame constructorChess constructorclass Game Game(int i) System.out.println(“Game constructor“);class BoardGame extends Game BoardGame(int i) super(i);System.out.println(“BoardGame constructor“);public class Chess extends BoardGame Chess() super(11);Syste
44、m.out.println(“Chess constructor“);public static void main(String args) Chess x = new Chess();4、仔细阅读下面的程序代码,编译和运行后,请写出该程序的输出结果。Wind playingimport java.util.*;class Instrument protected void play() System.out.println(“Instrument playing“); static void tune(Instrument i) i.play();/ Wind object are ins
45、truments/ because then have the same interface:class Wind extends Instrument protected void play() System.out.println(“Wind playing“); public static void main(String args) Wind flute = new Wind();Instrument.tune(flute);5、仔细阅读下面的程序代码,编译和运行后,请写出该程序的输出结果。This Product is made by My CorpIt cost $5To orde
46、r from My Corp call 7963628.Each item costs $5interface Product static final String MAKER = “My Corp“;static final String PHONE = “7963628“;public int getPrice(int id);class Shoe implements Product public int getPrice(int id) if ( id = 1 )return 5;elsereturn 10;public String getMaker() return MAKER;public class Store static Shoe hightop;public static void init() hightop = new Shoe();public static void main(String args) init();getInfo(hightop);ord