JAVA期末复习和答案(1)讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java期末复习题
一、选择题:
1、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是 (B)
A. 类
B. 对象
C. 函数体
D. 数据块
2、定义一个不能被继承的名为Abc的类的正确方法是(E)
A.class Abc{} B.native class Abc{}
C.abstract final class Abc{} D.class Abc{final;} E.final class Abc{}
3、若要生成ClassA类的一个对象a,以下书写正确的是(A)
A.ClassA a=new ClassA();
B.ClassA a=new Class();
C.a=new ClassA();
D.ClassA a=ClassA();
4、类的构造函数被自动调用执行的情况是在定义该类的(c)
A. 成员函数时
B. 数据成员时
C.对象时
D. 构造函数时
5、编译运行下面程序时有何种结果?请选择一个正确的答案(A)
class Test{
public static void main(){
System.out.println("hello");
}
}
A.程序不能编译,因为main()方法定义不正确。
B.程序能编译,但不能运行,因为class未声明为public的。
C.程序能无错地编译并运行,但运行时将产生异常。
D.程序运行时显示“hello”。
6、关于抽象方法的说法正确的一项是(A)
A、可以有方法体
B、可以出现在非抽象类中
C、抽象方法是没有方法体的方法
D、抽象类中的方法都是抽象方法
7、假定AB为一个类,则执行AB x=new AB( );语句时将自动调用该类的(B)
A.有形参构造函数B.无形参构造函数 C.其他成员函数 D.重载函数8、编译并运行如下程序后,结果是什么?请在给出的选项中选择出正确的答案(E)class Array{
public static void main(String[] args){
int length=100;
int[] d=new int[length];
for(int index=0;index<length;index++)
System.out.println(d[index]);
}
}
A.因为int[]数组声明不正确,程序不能被编译。
B.程序被编译,但在运行时将抛出一个ArrayIndexOutOfBoundsException异常。
C.程序将显示数字0到99,然后将抛出一个ArrayIndexOutOfBoundsException异常。
D.程序被编译,但println()方法将抛出一个NoSuchMethodException异常。
E.程序正常运行,并显示100个0。
9、下列关于接口的说法正确的是哪一项(D)
A.接口与抽象类是相通的概念
B.实现一个接口必须实现接口的所有方法
C.接口之间不能有继承关系
D.一个类可实现多个接口
10、实现运行时的多态性用(A)
A.重载方法B.构造方法C.非重载方法 D.抽象方法
11、哪一种布局管理器是从上到下、从左到右安排组件,当移动到下一行时是居中的(B)A.BorderLayout B.FlowLayout C.GridLayout
D.CardLayout E.GridBagLayout
12、下列对继承的说法正确的一项是(B)
A.子类能继承父类的所有方法和状态
B.子类能继承父类的非私有方法和状态
C.子类只能继承父类的public方法和状态
D.子类只能继承父类的方法,而不能继承状态
13、Java语言中,如果你有下面的类定义:
abstract class Shape {
abstract void draw(); }
class Square extends Shape{ }
如果你试图编译上面的代码会发生(B)。
A.一切成功编译
B. Shape可以编译Square不能编译
C. Square可以编译Shape不能编译
D. Shape、Square都不能编译
14、下面代码是做什么的(E)
JTextField tf=new JTextField(30);
A.代码不合法。
在JTextField中,没有这样的构造方法
B.创建了一个30行的JTextField对象,但没进行初始化,它是空的。
C.创建了一个30列的JTextField对象,但没进行初始化,它是空的。
D.创建一个有30行文本的JTextField对象。
E.创建一个有30列文本的JTextField对象。
15、构造方法何时被调用(B)
A、类定义时
B、创建对象
C、调用方法时
D、使用对象的变量时
16、 int[] my_Array;
my_Array=new int[5];
for(int count=0;count <=5;count++)
System.out.println(my_Array[count]);
以上Java代码运行的结果是(d)。
A.将1,2,3,4,5输出到屏幕 B.将0,1,2,3,4输出到屏幕
C.将0,1,2,3,4,5输出到屏幕 D.将出现运行时异常
17、给出如下代码:
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
18、下面对形参的说法中哪一项是正确的(C)
A.必须有两个B.至少有一个
C.可以没有D.至少有两个
19、在JAVA编程中,Java编译器会将java程序转换为(A)。
A.字节码 B.可执行代码 C.机器代码 D.以上所有选项都不正确
20、下面的表达式中正确的是( b )
A.String s=″你好″;int i=3;s+=i;
B.String s=″你好″;int i=3;if(i==s){s+=i};
C.String s=″你好″;int i=3;s-=i;
D.String s=″你好″;int i=3;s=i+;
21、下列说法中正确的一项是(D)
A.不需要定义类就能创建对象B.对象中必须有简单变量
C.属性必须是简单变量D.属性可以是简单变量,也可以是一个对象22、在JAVA编程中,以下(B)命令用来执行java类文件。
A. Javac B.java C.appletviewer D.以上所有选项都不正确
23、下列语句片段
int a=10,b=4,c=20,d=6;
System.out.println(a++*b+c*--d);
的结果为(C)
A.144
B.28
C.140
D.不能执行
24、下列说法哪一个是正确的(A)
A.类是变量和方法的集合体
B.数组是无序数据的集合
C.抽象类可以实例化
D.类成员数据必须是共有的
25、JAVA中,使用(C)修饰符时,一个类能被同一包或不同包中的其他类访问。
A. private B.protected C.public D.final
26、下面哪个修饰符修饰的方法只能被本类中的其他方法使用(C)
A、protected
B、static
C、private
D、public
27、关于对象成员占用内存的说法哪一项是正确(B)
A.同一个类的对象公用一段内存
B.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
C.对象的方法不占用内存
D.以上说法都不对
28、JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()”,该语句(C)。
A.调用类Worker中定义的super( )方法 B.调用类Person中定义的super( )方法
C.调用类Person的构造函数 D.语法错误
29、当方法遇到异常又不知如何处理时,下列哪种说法是正确的(B)
A.捕获异常
B.抛出异常
C.声明异常
D.嵌套异常
30、执行下面的赋值语句后,a的值为(B)
A=Float.valueOf(“12.34”).floatValue();
A.a=”12.34”B.a=12.34
C.a=1234 D.a=12
31、JAVA语言中,下面关于类的描述正确的是(B)。
A.一个子类可以有多个父类 B.一个父类可以有多个子类
C.子类可以使用父类的所有 D.子类一定比父类有更多的成员方法
32、下列符号中不能作为Java标识符的是(C)
A.条件B.xyz C.45six D.ω
33、下列关于一个二维的整型数组的定义,不正确的是(A)
A.int a[10][10]=new int[][]; B.int[]a[]=new int[10][10];
C.int[][]a=new int[10][10]; D.int a[][]=new int[10][10];
34、JAVA是一种完全面向(B)的语言。
A.过程 B.对象 C.组件 D.服务
35、下列哪些不是Java的关键字(B)
A.extends B.open C.class D.if E.import
36、定义一个表示20个值为null的字符串数组,下面选项正确的是(D)。
A、String[] a;
B、String a[];
C、char a[20][];
D、String a[]=new String[20];
37、JAVA中,实现继承的关键字是(C)。
A. Public B.class C.extends D.imp lements
38、在Java语言中,整型常数123占用的存储字节数是(C)
A.1 B.2 C.4 D.8
39、设x=1、y=2和z=3,者表达式y+=z--/++x的值是(b)
A.3 B.3.5 C.4 D.4.5
40、 application中的主类需包含main方法,main方法的返回类型是(D)。
A.int B.float C.double D.void
41、在Java语言中,'\u0041'在内存中占用的字节数是(D)
A.2 B.4 C.6 D.8
42、应用程序中的main()方法返回的类型是(A)
A.void B.String C.char D.int
43、下程序片段,不能插入到第1行的是(b)。
1.
2. class A{
3. //do sth
4. }
A.public class MainClass{ } B.int x=1;
C.class ANotherClass{ } D.import java.util.*;
44、下面可作为public void aMethod( ){...}重载方法的是(C)。
A.void aMethod( ){...} B.public int aMetho d(){...}
C.public void aMethod ( ){...} D.public int aMethod ( int m){...}
45、下面哪个语句会产生编译错误(C)
A、float F=4096.0F;
B、double D=4096.0;
C、byte B=4096;
D、char C=4096;
46、假设A类有如下定义:
class A
{ int i;
static String s;
void method1() { }
static void method2() { }
}
设a是A类的一个实例,下列语句调用错误的是(C)。
A.System.out.println(a.i); B.a.method1( );
C.A.method1( ); D.A.method2( )
47、在Java语言中,实型常数45.67在内存中占用的字节数是(C)
A.1 B.2 C.4 D.8
48、下列关于实型变量书写正确的是(C)
A.E3 B.2e0.3 C.1.2e3 D.1.2E0.3
49、下列数据是常量(A)
A、null
B、name
C、E
D、ff
50、选出所有不合法的表达式(D)
A.(true & true) B.(4!=5 & 5==6)
C.(int myInt=0>3) D.float myFloat=40.0;
51、在Java语言中,'\u0041'在内存中占用的字节数是(D)
A.15 B.2 C.4 D.8
52、不允许作为类及类成员的访问控制符的是(B)。
A. public
B. private
C. static
D. protected
53、设有代码:
Boolean b1=new Boolean(true);
Boolean b2=new Boolean(true);
下面表达式是返回true的合法表达式(B)
A.b1==b2 B.b1.equals(b2)
C.b1 & b2 D.b1| b2
54、现有两个类M、N,以下描述中表示N继承自M的是(D)。
A、class M extends N
B、class N implements M
C、class M implements N
D、class N extends M
55、下列哪个选项是合法标识符(A)
A._book B.5files C.+static D.-3.1415926
56、下列与其它选项不等的是(D)
A.2 B.0xF C.015 D.0XF
57、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。
A. static void method( )
B. public void met hod( )
C. final void method( )
D. abstract void method( )
58、下列类定义中哪些是合法的抽象类定义(d)
A.class Animal{abstract void growl();}
B.abstract Animal{abstract void growl();}
C.class abstract Animal{abstract void growl();}
D.abstract class Animal{ Abstract void growl();}
E.abstract class Animal{abstract void growl(){System.out.println(“growl”);}}
59、下列选项不属于Java保留字的是(A )
A.null B.false C.sizeof D.true
60、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。
A. .java
B. .class
C. .html
D. .e xe
二、填空题:
1、一个Java的图形用户界面的最基本组成部分是组件。
2、登录Sun公司网站,能够看到有关J2SE、J2EE和J2ME的信息。
无论哪种Java运行平台,都包含了相应的解释器,解释器负责将字节码文件加载到内存,然后采用解释方式执行字节码文件。
3、在Java语言的简单数据类型中,占存储空间最少的数据类型byte.
4、局部变量只能在声明它的方法或者语句块中使用,而且使用之前必须进行赋值。
5、 Java语言共有三种注释,分别是//,/*…*/,/**…*/。
6、Java程序必须经过编译,再经过虚拟机才能执行。
通过编译器,Java语言源程序转换成与平台无关的中间编码,Java称之为字节码。
字节码再经过解释器的解释,转换为机器码,便可在计算机上运行。
任何可以运行Java字节码的程序都可以看成是,如浏览器和Java的开发工具等都可以看成是JVM的一部分。
7、在Java语言中,如果赋值运算符=两边的操作数类型不一致,并且左边操作数类型的优先级低于右边操作数类型的优先级,则需要对右边操作数进行强制转换。
8、编译.java文件使用的命令是javac。
9、抽象类体中,可以包含抽象方法,也可以不包含抽象方法,但类体包含抽象方法的类必须要声明为抽象类。
抽象类不能实例化,即使抽象类中没有声明抽象方法,也不能实例化。
10、画线的语句应该修改为static int var=100;
,程序才能通过编译运行
class MyClass{
int var=100;
static int getVal(){
return var;
}
}
11、 83 % 9 的值是2。
12、构造方法仅用于实例化对象,对成员变量进行初始化;成员方法用于对变量进行多种操作。
子类对父类的私有成员没有访问权限,子类对父类的成员变量和成员方法具有访问权限。
子类虽然继承了父类的成员变量和成员方法,但并不是对父类所有成员变量和成员方法都具有访问权限,即并不是在自己声明的方法中能够访问父类所有成员变量或成员方法。
13、Java中采用接口降低程序的复杂性,提高编程效率,只要是因为它使代码可重用。
14、接口可以看成是仅容纳抽象方法、常量,而又不能直接生成对象的特殊抽象类。
15、 BorderLayout布局类的所在类包是java.awt。
16、在Java中,所有的类都是通过直接或间接地继承ng.Object得到的。
17、监听按扭被按下事件的监听器是ActionListener。
18、在求解运算速度要求不高,但是要求程序简洁的问题时,通常采用结构。
19、new是实例化对象的操作符。
30、Java使用16位的Unicode字符集,因此,Java字符是一个16位的无符号整数。
31、抛出异常的关键字是throw和throws。
32、Java的浮点类型包括double和float两种。
33、表达式16.8%5的结果是1.8。
34、当方法有返回值时,必须在该方法体内使用return语句。
35、保留字final是用于定义常量,定义值以后不能再改变。
36、如果子类中的某个方法的方法头与他的父类中的某个方法的方法头完全一样,但方法实现的功能不同,称为子类对父类中同名方法的覆盖。
37、Java源文件中可以有1个public类。
38、在Java中有两种多态,一种是使用方法的重载实现多态,另一种是使用方法的覆盖实现多态。
三、判断题
1、 Java的类不允许多重继承,但接口支持多重继承。
(T)
2、无论AWT还是Swing设计的GUI组件必须要放置于容器中(T)。
3、在异常处理中总是将可能产生异常的语句放在try块中,用catch子句去处理异常,而且一个try块之后只能对应一个catch语句。
(F)
4、Java是面向对象程序设计语言(T)。
5、在一个Java源程序文件中,可以有多个public类。
(F)
6、子类向上转换成父类类型是安全的()。
7、 abstract方法所在的类必须是abstract类。
(T)
8、Java采用的是半编译半解释方式(F)。
9、使用方法length( )可以获得字符串或数组的长度。
(T)
10、接口中的方法都是abstarct方法(T)。
11、即使一个类中未显式定义构造函数,也会有一个缺省的构造函数,缺省的构造函数是无参函数,函数体为空(T)
12、静态方法不能使用this、super来调用(T)。
13、无论Java源程序包含几个类的定义,若该源程序文件以A.java命名,编译后生成的都只有一名为A的字节码文件(F)
14、方法重载和方法改写都要求方法的返回类型必须相同(T)。
15、当通过实现Listener接口完成事件处理时,要同时实现该接口中的所有方法。
(T)
16、子类构造方法中的第一条语句一定是通过super()调用父类的对应入口参数的构造方法或是通过this()调用本类的另一对应入口参数构造方法(T)。
17、Package语句必须放在程序的第一句。
(T)
18、java中类是单一继承性,而接口是多继承性(T)。
19、因为Java不支持多继承,所以定义类时implements关键字后面只能说明一个接口名
(F)
20、接口中定义的数据字段一定是常量(T)。
四、简答题
1、在右边的矩形框中写出该程序运行的结果。
public class Test
{ public static void main(String[] args)
{ ClassB cb1=new ClassB(1);
ClassB cb2=new ClassB(1);
if(cb1.x==cb2.x){ System.out.println("cb1==cb2"); }
else{ System.out.println("cb1!=cb2"); } } }
class ClassB
{ int x;
ClassB(int x){this.x=x; }
}
答案:cb1==cb2
2、将下面的switch语句用嵌套的if语句表示出来
switch(choice){
case 1:a=0;
b=0;
break;
case 2:a=1;
b=1;
break;
case 3:a=2;
b=2;
break;
default:c=2;
d=3;
break;
}
答案:if(a==0){b=0;}
Else if(a==1){b=1;}
Else if(a==2){b=2;}
Else c=2;d=3;
3、写出下列程序的运行结果
import java.io.*;
public class Test{
public static void main(String[] args){
subclass subW=new subclass();
subW.doPrint();
}
}
class superClass{
int x;
superClass(){
x=3;
System.out.println("in superClass:x="+x);
}
void doPoint(){}
}
class subclass extends superClass{
int x;
subclass(){
super();
x=8;
System.out.println("in subClass():x="+x);
}
void doPrint(){
super.doPoint();
System.out.println("super.x="+super.x+" sub.x="+x);
}
}
in subClass():x=8
super.x=3 sub.x=8
4、在右边的矩形框中写出该程序运行的结果。
class StaticTest {
static int x=1;
int y;
StaticTest()
{ y++; }
public static void main(String args[ ]){
StaticTest st=new StaticTest();
System.out.println("x=" + x);
System.out.println("st.y=" + st.y);
st=new StaticTest();
System.out.println("st.y=" + st.y); }
static { x++;}
}
5、写出下列程序的运行结果
class Time1{
private int hour;
private int minute;
private int second;
public Time1(){
setTime(0,0,0);
}
public Time1(int hh){
setTime(hh,0,0);
}
public Time1(int hh,int mm){
setTime(hh,mm,0);
}
public Time1(int hh,int mm,int ss){
setTime(hh,mm,ss);
}
public String toString(){
retunr (hour+":"+(minute<10?"0":"")+minute+":"+(second<10?"0":"")+second);
}
}
public class MyTime1{
private static Time1 t0,t1,t2,t3;
public static void main(String[] args){
t0=new Time1();
t1=new Time1(11);
t2=new Time1(22,22);
t3=new Time1(33,33,33);
System.out.println("t0="+t0.toString());
System.out.println("t1="+t1.toString());
System.out.println("t2="+t2.toString());
System.out.println("t3="+t3.toString());
}
}
答案:t0=0:00:00
t1=11:00:00
t2=22:22:00
t3=0:33:33
6、在右边的矩形框中写出该程序运行的结果。
public class TestArray
{ public static void main(String args[ ]){
int i , j ;
int a[ ] = {1,3,2,5,4};
for ( i = 0 ; i < a.length-1; i ++ ) {
int k = i;
for ( j = i ; j < a.length ; j++ )
if ( a[j]>a[k] ) k = j;
int temp =a[i];
a[i] = a[k];
a[k] = temp; }
for ( i =0 ; i<a.length; i++ )
System.out.print(a[i]+" ");
System.out.println( ); }
}
答案:5、4、3、2、1
7、写出下列程序的运行结果
public class Exam {
public static void main(String[] args) { int x=5;
int m=0;
x+=x++ +(x++ +m);
System.out.println(x);
}
}
答案:16
8、在右边的矩形框中写出该程序运行的结果。
class MyException extends Exception{
private int detail;
MyException( int a ){ detail = a;}
public String toString( ){ return "MyException "+detail; } }
public class ExceptionDemo{
public static void compute(int a) throws MyException {
System.out.println("called compute("+a+")");
if( a>10 ) throw new MyException(a);
System.out.println("normal exit"); }
public static void main( String args[] ){
try{ compute(6 ); compute( 12 ); }
catch( MyException e ){ S ystem.out.println("Caught "+e); } } }
答案:
normal exit
called compute(12)
Caught MyException 12
9、试标识出下面的QQ类中的所有无效语句(用下划线标示出),对每个无效语句说出其无效的理由。
class QQ{
private int alpha;
private int beta;
public static void classMethod(){
this.beta=this.alpha*2; //beta和alpha不是静态.
}
public QQ(){ //无返回值,应该用void
QQ(0,0);
}
public QQ(int x,int y){//无返回值,应该用void
alpha=this.x; //应该是this.alpha=x;this.beta=y;
beta=this.y;
}
}
10、在右边的矩形框中写出该程序运行的结果。
class OverloadDemo{
void testOverload( int i ){
System.out.println(“int”); }
void testOverload(String s){
System.out.println(“String”); }
public static void main(String args[ ]){
OverloadDemo a=new OverloadDemo ( );
char ch=’x’;
a.testOverload(ch); }
}
答案:int
11、写出下列程序的运行结果
public class Text {
public int t=4;
public static void main(String[] args) {
new Text().NumberPlay();
}
public void NumberPlay(){
int t=2;
t=t+5;
this.t=this.t-2;
t=t-this.t;
System.out.print(t+" ");
System.out.println(this.t);
}
}
答案:5 2
12、在右边的矩形框中写出该程序运行的结果。
class First{
public First(){
aMethod(); }
public void aMethod(){
System.out.println(“in First class”);}
}
public class Second extends First{
public void aMethod(){
System.out.println(“in Second class”);}
public static void main(String[ ] args){
new Second( ); }
}
答案:in Second class
13、设计实现地址概念的类Address。
Address具有属性:省、市、街道、门牌号、邮编,具有能设置和获取属性的方法。
14、请将下列程序补充完整
下列程序定义一个表示圆形的类,能够计算园面积和周长
class MyCircle{
float r;
final double PI=3.14159;
public double area(){ //计算面积
return PI*r*r;
}
public void setR(float x){ //设置半径
r=x;
}
public double perimeter(){ //计算周长
return 2*PI*r;
}
public static void main(String[] args){
double x,y;
MyCircle cir=new MyCircle();
cir.setR(12.35f);
x=cir.area();//计算cir对象的面积
y=cir.perimeter; //计算cir对象的周长
System.out.println("圆面积="+x+"\n圆周长="+y);
}
}
15、给定数组int[] data={56,7,3,22,90,0,22,34,5,3};;编写程序统计偶数个数与奇数个数,并输出统计结果。
class Count{
public static void main(String args[])
{
int[] data={56,7,3,22,90,0,22,34,5,3};
System.out.println("奇数的个数是:"+Oddnumber(data));
System.out.println("偶数的个数是:"+Evennumber(data));
}
public static int Oddnumber(int[] data)
{
int count=0;
for(int i=0;i<data.length;i++)
{
if(data[i]%2==1)
{
count++;
}
}
return count;
}
public static int Evennumber(int[] data)
{
int count=0;
for(int i=0;i<data.length;i++)
{
if(data[i]%2!=1)
{
count++;
}
}
return count;
}
}
16、采用递归算法编写求n!的方法static long fac(int n)。
17、设计一个圆类Circle,具有属性:圆心坐标x和y及圆半径r,除了具有设置及获取属性的方法外,还具有计算周长的方法Perimeter()和计算面积的方法area()。
再设计一个圆柱体类Cylinder,Cylinder继承自Circle,增加了属性:高度h,增加了设置和获取高度h的方法、计算表面积的方法area()和计算体积的方法volume()。