java复习题.docx
《java复习题.docx》由会员分享,可在线阅读,更多相关《java复习题.docx(20页珍藏版)》请在冰豆网上搜索。
java复习题
第1章Java语言概述
习题一
一、选择题
1.下面关于JavaApplication程序结构特点描述中,错误的是(D)。
A.一个JavaApplication程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。
B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。
C.组成JavaApplication程序的多个类中,有且仅有一个主类。
D.一个.java文件中定义多个类时,允许其中声明多个public类。
2.编译Java程序后生成的面向JVM的字节码文件的扩展名是(B)。
A..javaB..classC..objD..exe
3.下面关于Java语言特点的描述中,错误的是(A)。
A.Java是纯面向对象编程语言,支持单继承和多继承。
B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。
C.Java支持多线程编程。
D.Java程序与平台无关、可移植性好。
4.JavaSE的命令文件(java、javac、javadoc等)所在目录是(C)。
A.%JAVA_HOME%\jreB.%JAVA_HOME%\lib
C.%JAVA_HOME%\binD.%JAVA_HOME%\demo
5.下列关于运行字节码文件的命令行参的描述中,正确的是(C)。
A.命令行的命令字被存放在args[0]中。
B.数组args[]的大小与命令行的参数的个数无关。
C.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中。
D.第一个命令行参数被存放在args[1]中。
7.Java的核心包中,提供编程应用的基本类的包是(B)。
A.B.C.D.
8.编译Java程序时,用于指定生成class文件位置的选项是(A)。
A.-dB.-gC.-verboseD.-nowarn
9.下列标识符(名字)命名原则中,正确的是(C)。
A.类名的首字母小写B.接口名的首字母小写
C.常量全部大写D.变量名和方法名的首字母大写
10.下面哪些选项是正确的main方法说明(D)
A.voidmain()B.privatestaticvoidmain(Stringargs[])
C.publicmain(Stringargs[])D.publicstaticvoidmain(Stringargs[])
11.下面哪种注释方法能够支持javadoc命令(C)
A..*/C./**...*/D./**...**/
二、判断题
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。
(√)
2.Java语言的源程序不是编译型的,而是编译解释型的。
(√)
3.JavaApplication程序中,必有一个主方法main(),该方法有没有参数都可以。
(√)
5.Java程序中不区分大小写字母。
(×)
6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。
(√)
8.当前路径的标识是“.”。
(√)
9.java命令不区分大小写,而javac命令区分大小写。
(×)
11.在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。
(×)
第2章Java语言基础
习题二
一、填空题
1.已知:
inta=8,b=6;则:
表达式++a-b++的值为(3)。
2.已知:
booleanb1=true,b2;则:
表达式!
b1&&b2||b2的值为(false)。
3.已知:
doublex=,y=;则:
表达式x++>y--值为(true)。
4.已知:
inta[]={2,4,6,8};则:
表达式(a[0]+=a[1])+++a[2]值为(13)。
5.执行intx,a=2,b=3,c=4;x=++a+b+++c++;结果是(x=10,a=3,b=4,c=5)。
6.Java中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。
7.在Java中,字符串和数组是作为(对象)出现的。
8.执行下列程序代码的输出结果是(10,11,11)。
inta=10;inti,j;i=++a;j=a--;
"%d,%d,%d",a,i,j);
9.执行完booleanx=false;booleany=true;booleanz=(x&&y)&&(!
y);intf=z==false1:
2;
这段代码后,z与f的值分别是(false)和
(1)。
二、选择题
1.下面哪些标识符在Java语言中是合法的(AB)
A.persons$B.TwoUsersC.*pointD.instanceof
2.下列(D)是合法标识符。
A.2endB.-helloC.=ABD.整型变量
3.已知inti=2147483647;++i;则i的值等于(A)。
A.-2147483648B.2147483647C.2147483648
4.若x=5,y=8,则表达式x|y的值为(B)。
A.3B.13C.0D.5
5.若定义有变量floatf1,f2=8.0F,则下列说法正确的是(B)。
A.变量f1,f2均被初始化为B.变量f1没有被初始化,f2被初始化为
C.变量f1,f2均未被初始化D.变量f2没有被初始化,f1被初始化为
6.基本数据类型short的取值范围是(B)。
A.(-256)~255B.(-32768)~32767C.(-128)~127D.0~65535
7.下列(B)是不能通过编译的语句。
A.doubled=;B.chara1=“c”;C.inti=321;D.floatf1=45.0f;
8.若定义有shorts;byteb;charc;则表达式s*b+c的类型为(C)。
A.charB.shortC.intD.byte
9.下列循环语句的循环次数是(B)。
inti=5;
do{
i--;
}while(i!
=0);
A.5B.无限C.0D.1
10.下列代码哪几行会出错(C)
1)publicvoidmodify(){
2)intI,j,k;
3)I=100;
4)while(I>0){
5)j=I*2;
6)"Thevalueofjis"+j);
7)k=k+1;
8)I--;
9)}
10}
A.line4B.line6C.line7D.line8
11.下列关于数组的定义形式,哪些是错误的(ABC)
A.int[]c=newchar[10];B.int[][3]=newint[2][];
C.int[]a;a=newint;D.charb[];b=newchar[80];
12.执行String[]s=newString[10];语句后,哪些结论是正确的(BC)
A.s[0]为未定义B.为10
C.s[9]为nullD.s[10]为""
13.下列关于Java语言的数组描述中,错误的是(D)。
A.数组的长度通常用length表示B.数组下标从0开始
C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界
14.下面的表达式哪些是正确的(ACE)
A.Strings="你好";inti=3;s+=i;
B.Strings="你好";inti=3;if(i==s){s+=i};
C.Strings="你好";inti=3;s=i+s;
D.Strings="你好";inti=3;s=i+;
E.Strings=null;inti=(s!
=null)&&()>0)():
0;
15.下列代表十六进制整数的是(C)。
A.012345B.2008C.0xfa08D.fb05
16.在switch(expression)语句中,expression的数据型不能是(C)。
A.charB.shortC.doubleD.byte
17.下列说法正确的是(AC)。
A.表达式“1+2>3”的值是falseB.表达式“1+2||3”是非法的表达式
C.表达式“i+j=1”是非法的表达式D.表达式“1+2>3”的值是true
18.指出正确的表达式(B)。
A.byte=128;B.longl=0xfffL;C.Boolean=null;D.double=;
19.publicclassT18{
staticintarr[]=newint[10];
publicstaticvoidmain(Stringa[]){
}
}
哪个语句是正确的(C)
A.编译时将产生错误B.编译时正确,运行时将产生错误
C.输出零D.输出空
20.若Strings="hello";Stringt="hello";charc[]={'h','e','l','l','o'};则下列哪些表达式返回true(AB)
A.(t);B.(newString("hello"));
C.(c);D.s==t;
21.执行下面的代码段:
switch(m){case0:
"case0");
case1:
"case1");break;
case2:
default:
"default");
}
下列m的哪些值将引起"default"的输出(CD)
A.0B.1C.2D.3
三、判断题
1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。
(×)
2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。
(√)
3.所有的变量在使用前都必须进行初始化。
(×)
4.已知bytei=(byte)127;i=i+1;这两个语句能被成功编译。
(√)
5.Stringstr="abcdefghi";charchr=(9);(×)
6.char[]chrArray={'a','b','c','d','e','f','g'};charchr=chrArray[6];(√)
7.inti,j;booleanbooleanValue=(i==j);(×)
8.intintArray[]={0,2,4,6,8};intlength=int();(×)
9.Stringstr="abcedf";intlength=;(×)
10.shortshortValue=220;bytebyteValue=shortValue;(×)
11.int[]intArray[60];(×)
12.char[]str="abcdefgh";(×)
13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。
(√)
14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。
(√)
第3章Java语言面向对象基础
习题三
一、填空题
1.类是一组具有相同(属性)和(行为)的对象的抽象。
(实例)是由某个特定的类所描述的一个个具体的对象。
2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。
7.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。
8.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。
10.对象作方法形参时,方法实参也用对象,实现(引用)调用。
11.(new)是一个特殊的方法,用于创建一个类的实例。
13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。
14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。
15.Java使用固定于首行的(package)语句来创建包。
16.在运行时,由java解释器自动引入,而不用import语句引入的包是()。
二、选择题
1.下面关于封装性的描述中,错误的是(D)。
A.封装体包含属性和行为B.被封装的某些信息在外不可见
C.封装提高了可重用性D.封装体中的属性和行为的访问权限相同
2.下面关于类方法的描述,错误的是(B)。
A.说明类方法使用关键字staticB.类方法和实例方法一样均占用对象的内存空间
C.类方法能用实例和类名调用D.类方法只能处理类变量或调用类方法
3.下面关于包的描述中,错误的是(A)。
A.包是若干对象的集合B.使用package语句创建包
C.使用import语句引入包D.包分为有名包和无名包两种
4.下述哪些说法是正确的(BC)
A.用static关键字声明实例变量B.实例变量是类的成员变量
C.局部变量在方法执行时创建D.局部变量在使用之前必须初始化
三、判断题
1.类是一种类型,也是对象的模板。
(√)
2.类中说明的方法可以定义在类体外。
(×)
3.实例方法中不能引用类变量。
(×)
4.创建对象时系统将调用适当的构造方法给对象初始化。
(√)
5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。
(√)
6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。
(√)
7.对象可作方法参数,对象数组不能作方法参数。
(×)
8.class是定义类的惟一关键字。
(√)
9.Java语言会自动回收内存中的垃圾。
(√)
第4章Java语言面向对象高级程序设计
习题四
一、填空题
3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。
4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类与非子类)的代码访问引用。
5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。
6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。
7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。
8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。
9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。
10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。
11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。
12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。
13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。
14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。
如果没有指出父类,则该类的默认父类为(Object类)。
15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。
16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。
17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。
18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。
19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。
20.Java不直接支持多继承,但可以通过(接口)实现多继承。
类的继承具有(传递)性。
21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。
22.一个接口可以通过关键字extends来继承(多个)其他接口。
23.接口中只能包含(publicstaticfinal)类型的成员变量和(publicabstract)类型的成员方法。
24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。
25.静态内部类可直接通过外部类名引用,其一般格式是(new外部类名.内部类构造方法();)。
26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。
二、简答题
1.什么是继承什么是父类什么是子类继承的特性可给面向对象编程带来什么好处什么是单继承什么是多重继承
2.如何创建一个类的子类
3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用
4.什么是多态使用多态有什么优点Java中的多态有哪几种重载方法与覆盖方法分别属于哪种多态
5.什么是重载方法什么是覆盖方法它们的主要区别是什么
6.什么是成员变量的继承什么是成员变量的覆盖
8.简述接口定义的一般格式。
9.什么是接口如何定义接口接口与类有何区别
10.一个类如何实现接口实现某接口的类是否一定要重载该接口中的所有抽象方法
11.比较接口与抽象类的异同。
12.什么是抽象类什么是抽象方法各自有什么特点
13.什么是最终类什么是最终变量什么是最终方法
14.简述内部类的类型。
15.简述在外部类的内部与外部对实例成员类实例化的方法。
三、选择题
1.下面关于类的继承性的描述中,错误的是(C)。
A.继承是在已有的基础上生成新类的一种方法
B.Java语言要求一个子类只有一个父类
C.父类中成员的访问权限在子类中将被改变
D.子类继承父类的所有成员,但不包括私有的成员方法
2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(B)。
A.默认B.protectedC.privateD.public
3.在类的修饰符中,规定只能被同一包类所使用的修饰符是(B)。
A.publicB.默认C.finalD.abstract
4.下列关于子类继承父类的成员描述中,错误的是(C)。
A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。
B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。
C.子类中继承父类中的所有成员都可以访问。
D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。
5.定义一个类名为“”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的(AB)
A.publicclassMyClassextendsObjectB.publicclassMyClass
C.privateclassMyClassextendsObjectD.classMyClassextendsObject
6.下列关于继承性的描述中,错误的是(C)。
A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员
C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员
7.下列关于抽象类的描述中,错误的是(C)。
A.抽象类是用修饰符abstract说明的B.抽象类是不可以定义对象的
C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类
8.设有如下类的定义:
publicclassparent{
intchange(){}
}
classChildextendsParent{}
则,下面哪些方法可加入Child类中(AB)
A.publicintchange(){}B.intchang(inti){}
C.privateintchange(){}D.abstractintchang(){}
9.下列关于构造方法的叙述中,错误的是(D)。
A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明
C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承
10.下面叙述中,错误的是(C)。
A.子类继承父类B.子类能替代父类C.父类包含子类D.父类不能替代子类
11.下列对多态性的描述中,错误的是(B)。
A.Java语言允许方法重载与方法覆盖B.Java语言允许运算符重载
C.Java语言允许变量覆盖D.多态性提高了程序的抽象性和简洁性
12.下面关于接口的描述中,错误的是(A)。
A.一个类只允许继承一个接口B.定义接口使用的关键字是interface
C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现
D.接口实际上是由常量和抽象方法构成的特殊类
13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的(C)
A.ArrayListmyList=newObject();B.ArrayListmyList=newList();
C.ListmyList=newArrayList();D.ListmyList=newList();
14.下列哪些方法与方法publicvoidadd(inta){}为合理的重载方法(ACD)
A.publicvoidadd(chara)B.publicintadd(inta)
C.publicvoidadd(inta,intb)D.publicvoidadd(floata)
15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(C)。
A.publicintMAX_LENGTH=100;B.finalpublicintMAX_LENGTH=100;
C.publicfinalintMAX_LENGTH=100;D.finalintMAX_LENGTH=100;