级夜大本科java复习题.docx
《级夜大本科java复习题.docx》由会员分享,可在线阅读,更多相关《级夜大本科java复习题.docx(25页珍藏版)》请在冰点文库上搜索。
级夜大本科java复习题
一、判断题
1、对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。
(×)
2、类及其属性、方法可以同时有一个以上的修饰符来修饰。
(√)
3、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。
(×)
4、Final类中的属性和方法都必须被final修饰符修饰。
(×)
5、最终类不能派生子类,最终方法不能被覆盖。
(√)
6、一个Java类可以有多个父类。
(×)
7、一个Java类可以有多个构造函数。
(√)
8、Java类的构造函数可以有返回值。
(×)
9、一个类不能既被声明为abstract的,又被声明为final的。
(√)
10、如果p是父类Parent的对象,而c是子类Child的对象,则语句c=p是正确的。
(×)
11、一个类如果实现了某个接口,那么它必须重载该接口中的所有方法。
(×)
12、接口中的常量永远是private,public,static,final。
(×)
13、一个抽象类的子类必须要定义从超类中继承过来的所有的抽象方法。
(×)
14、所有的抽象方法都必须存在于抽象类中。
(√)
15、抽象类中不允许包含非抽象的方法。
(×)
16、static方法不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量。
(√)
17、子类构造函数总是先显式的或隐式地调用其父类的构造函数,以创建和初始化子类的父类成员。
(√)
18、在类的引用中,子类的对象可以当作其父类的对象对待。
(√)
19、在类的引用中,父类的对象可以当作其子类的对象对待。
(×)
20、如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为形式参数。
(√)
21、如果父类对象引用指向的实际是一个子类对象,那么父类对象引用可以强制类型转化成子类对象的引用。
(√)
22、如果一个方法的形式参数定义的是子类对象,那么调用这个方法时,可以使用父类对象作为形式参数。
(×)
二、选择题
1、编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(A)。
A..javaB..classC..htmlD..exe
2、以下(B)不是Java中有效的关键字。
A、constB、NULLC、falseD、this
3下面哪些是Java中合法的标识符(BCD)AcontinueBReturnCD123Dm_int
4编译Java源程序文件产生的字节码文件的扩展名为(A)AjavaBclassChtmlDexe
5下面是在命令行运行Java应用程序A,怎样才能在main(Stringargs[])方法中访问单词"first"?
(B)
javaAthefirstsnowthefirstsnow.Aargs[0]Bargs[1]Cargs[2]Dargs[5]
6不允许作为类及类成员的访问控制符的是(C)。
A.publicB.privateC.staticD.protected
7下面哪些不是java的简单数据类型?
(C)A.shortB.BooleanC.DoubleD.float
8为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。
A.staticvoidmethod()B.publicvoidmethod()C.finalvoidmethod()D.abstractvoidmethod()
9下列代码中,将引起一个编译错误的行是(D)。
A、第3行B、第5行C、第6行D、第10行
1)publicclassTest{
2)intm,n;
3)publicTest(){}
4)publicTest(inta){m=a;}
5)publicstaticvoidmain(Stringargs[]){
6)Testt1,t2;
7)intj,k;
8)j=0;k=0;
9)t1=newTest();
10)t2=newTest(j,k);
11)}
12)}
10阅读下列代码后
publicclassPerson{
intarr[]=newint[10];
publicstaticvoidmain(Stringargs[]){
System.out.println(arr[1]);
}
}
正确的说法是___A___。
A、编译时将产生错误B、编译时正确,运行时将产生错误C、输出为零D、输出为空
11代码如下:
1.publicclassWhileExm{
2.publicstaticvoidmain(String[]args){
3.intx=1,y=6;
4.while(y--){x--;}
5.system.out.printIn(“x=”+x“y=”+y);
6.}
7.}
结果是什么?
(E)
A.Theoutputisx=6y=0
B.Theoutputisx=7y=0
C.Theoutputisx=6y=-1
D.Theoutputisx=7y=-1
E.编译失败
12代码如下:
1.publicclassFoo{
2.privateintval;
3.publicfoo(intv)(val=v;)}
4.publicstaticvoidmain(String[]args){
5.Fooa=newFoo(10);
6.Foob=newFoo(10);
7.Fooc=a;
8.intd=10;
9.doublee=10.0;
10.}
11.}
下面哪个逻辑表达式为真?
(A)A.(a==c)B.(b==d)C.(a==b)D.(b==c)E.(d==10.0)
13代码如下:
1.inti=1,j=0;
2.switch(i){
3.case2:
4.j+=6;
5.case4:
6.j+=1;
7.case1:
8.j+=2;
9.case0:
10.j+=4;
11.}
最终j的值是什么?
(E)A.0B.1C.2D.4E.6
14char的数值范围是多少?
(B)
A.0...32767B.0...65535C.–256...255D.–32768...32767E.Rangeisplatformdependent.
15下面关于变量及其范围的陈述哪些是对的?
(C)
A.实例变量是类的成员变量。
B.实例变量用关键字static声明。
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化。
16有关构造方法,下列叙述正确是?
(D)
A.默认的构造方法初始化方法变量。
B.默认的构造方法初始化了在类中声明的实例变量。
C.假如一个类缺少没有参数的构造方法,但是有其它的构造方法,则编译器生成一个缺省的构造方法。
D.编译器只有当一个类没有其它的构造方法时才生成缺省的构造方法。
17关于被保护访问控制符protected修饰的成员变量,以下说法正确的是(A)
A.可以被三种类所引用:
该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:
该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
18关于被私有保护访问控制符privateprotected修饰的成员变量,以下说法正确的是(B)
A.可以被三种类所引用:
该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:
该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
19关于被私有访问控制符private修饰的成员变量,以下说法正确的是(C)
A.可以被三种类所引用:
该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:
该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
20下述说法中,错误的是(D)
A.Java中,方法的重载是指多个方法可以共享同一个名字
B.Java中,用abstract修饰的类称为抽象类,它不能实例化
C.Java中,接口不包含成员变量和方法实现
D.Java中,构造方法可以有返回值
21下列关于修饰符混用的说法,错误的是(D)
A.abstract不能与final并列修饰同一个类
B.abstract类中不可以有private的成员
C.abstract方法必须在abstract类中
D.staic方法中能处理非static的属性
23哪些声明阻止了方法的overriding?
(A)
A.finalvoidmethoda(){}
B.staticvoidmethoda(){}
C.staticfinalvoidmethoda(){}
D.finalabstractvoidmethoda(){}
24哪个语句创建了一个数组实例?
(A)
A.int[]ia=newint[15];
B.floatfa=newfloat[20];
C.char[]ca=“SomeString”;
D.intia[][]={4,5,6}{1,2,3};
三、简答题
1、说明利用记事本和JDK开发一个Java程序的基本步骤。
答:
编辑源程序→编译生成字节码→解释运行字节码
2、Applet与javaapplication有什么区别?
简述各自的运行机制。
答:
JavaApplet程序是在WWW浏览器环境下运行,即不是完整独立运行程序;
运行JavaApplet程序的解释器不是独立的软件,而是嵌在WWW浏览器中作为浏览器软件的一部分。
JavaApplet程序中不需要有main方法,但是JavaApplet程序的主类必须是类库中已定义好的类Applet或JApplet的子类。
JavaApplet程序可以直接利用浏览器或AppletViewer提供的图形用户界面,而JavaApplication程序则必须另外书写专用代码来营建自己的图形界面。
3、java中的数据类型转换有哪两种?
分别解释其含义和用法。
答:
类型转换有两种:
自动类型转换(或称隐含类型转换)和强制类型转换。
自动类型转换
如果这两种类型是兼容的,Java将执行自动类型转换。
简单的说,当把占用位数较短的数据转化成占用位数较长的数据时,Java执行自动类型转换,不需要在程序中作特别的说明。
Java允许下面的类型转换直接转换(右边=左边),无须显式造型:
Byte→short→int→long→float→double
char→int
反之,必须做强制类型转换,转换形式为:
(数据类型)变量名或表达式
当把占用位数较长的数据转化成占用位数较短的数据时,会出现信息丢失的情况,因而不能够自动转换。
这时就需要利用强制类型转换,执行非兼容类型之间的类型转换。
经过强制类型转换,将得到一个在“()”中声明的数据类型的数据,该数据是从指定变量所包含的数据转换而来的。
值得注意的是,指定变量本身不会发生任何变化。
将占用位数较长的数据转化成占用位数较短的数据时,可能会造成数据超出较短数据类型的取值范围,造成“溢出”
4、如何声明Java类的静态属性?
与普通属性相比,静态属性有什么特点?
答:
被static修饰的属性称为静态属性
静态属性的特点是:
它们是类的属性,而不属于任何一个类的具体对象
换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。
5、Java中的访问控制符有哪些?
分别描述其允许的访问控制区域。
答:
public、缺省访问控制符、protected、private、privateprotected
公共访问控制符public:
可以被所有的其它类所访问和引用,这里的访问和引用是指这个类作为整体是可见和可使的,程序的其它部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法。
缺省访问控制符:
只能被同一个包中的类访问和引用,而不可以被其它包中的类使用这种访问特性又称为包访问性
保护访问控制符protected:
可以被三种类所引用:
该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。
私有访问控制符private:
只能被该类自身所访问和修改,而不能被任何其它类(包括该类的子类)来获取和引用。
私有保护访问控制符privateprotected:
可以被两种类访问和引用:
该类本身、该类的所有子类,不论这些子类是与该类在同一个包里还是处于其它的包中。
四、阅读题
1、阅读下面异常处理程序,写出执行结果
publicclassExceptionDemo{
publicstaticvoidmain(String[]args){
ExceptionTestet=newExceptionTest();et.m1();
}
}
classExceptionTest{
inti;
int[]a=newint[5];
voidm1(){
try{
while(true){
m2();
System.out.println();
}
}catch(Exceptione){
System.out.println("m1runs");
}
}
voidm2()throwsException{
try{
System.out.println(10/i);
System.out.println(a[i]);
}catch(ArithmeticExceptione){
i=10;
System.out.println("handleArithmeticException");
}
finally{
System.out.println("finally");
}
System.out.println("m2ends");
}
}
答:
执行结果如下
handleArithmeticException.
Finally
m2
1
Finally
m1runs
2、阅读下面程序,写出执行结果
classT{
voidf(intx){
System.out.println("intinT:
"+x);
}
voidf(doublex){
System.out.println("doubleinT:
"+x);
}
voidf(Objectx){
System.out.println("ObjectinT:
"+x);
}
}
classSextendsT{
voidf(intx){
System.out.println("intinS:
"+x);
}
}
publicclassTestOverride{
publicstaticvoidmain(String[]args){
Tt=newS();t.f(20);t.f(20L);
t.f(3.5f);t.f(3.5);t.f("abcdef");
}
}
答:
执行结果如下
intins:
20
doubleinT:
20.0
doubleinT:
3.5
doubleinT:
3.5
objectinT:
abcdef
3阅读下列程序,指出错误之处,说明原因,给出修改后语句
classIamAbstract
{
finalintf;
doubled;
abstractvoidmethod();答:
错误:
没有方法体改正:
voidmethod();
}
4阅读下列程序,指出错误之处,说明原因,给出修改后语句
classparent
{
privateintmine;答:
错误:
private不能被继承改正:
publicintmine;
}
classchildextendsparent
{
intgetMine()
{returnmine;}
}
5阅读下列程序,指出错误之处,说明原因,给出修改后语句
classparent
{
privateintmine;
intgetMine()
{
returnmine;
}
}
classchildextendsparent
{
intmine;
intgetMine()
{returnsuper.getMine;}答:
改正:
{returnsuper.getMine();}
}
6阅读下列程序,指出错误之处,说明原因,给出修改后语句
classAmIWrong
{
intdata1,data2;
AmIWrong()
{data1=-1;}
AmIWrong(intd)
{data2=d;
this();答:
此句放置句首
}
}
7阅读下列程序,指出错误之处,说明原因,给出修改后语句
interfaceMyInterface
{
voidmethod1();
}
abstractclassParentimplementsMyInterface
{
}
classChildextendsParent
{
voidmethod1()答:
改正:
publicvoidmethod1()
{
System.out.println(“Iamimplementednow!
”);
}
}
五、程序题
1补充完整下面方法,可以从三个数a,b,c中找出最大值,作为方法的返回值返回(10分)
intfindMax(inta,intb,intc){
//完整该方法
}
答:
intfindMax(inta,intb,intc){
//完整该方法
intmax=(a
b:
a;
if(maxmax=c;
}
returnmax;
}
2数组a中存放了若干整数,补充完整下面的方法,能从屏幕上分别打印出其中最大的整数,最小的整数,以及所有整数的算术平均数(10分)
voidProcessArray(int[]a){
//完整该方法
}
答:
voidProcessArray(int[]a){//完整该方法
intmax=a[0];
intmin=a[0];
intsum=0;
for(inti=0;i//System.out.println(a[i]);
if(maxmax=a[i];
}
if(min>a[i]){
min=a[i];
}
sum=sum+a[i];
}
intavg=sum/a.length;
System.out.println("max="+max+";"+"min="+min+";"+"sum="+sum+";"+"avg="+avg);
//System.out.println("min="+min);
//System.out.println("sum="+sum);
//System.out.println("avg="+avg);
}
3编写一个方法判断一个字符串是否为回文,例如“abcba”(10分)
boolisHuiwen(Stringstr){}
答:
booleanisHuiwen(Stringstr){
intlen=str.length();
Stringtemp[];
booleanflag=false;
for(inti=0;i{
if(temp[i].equals(temp[len-1-i])){
System.out.println("noequals!
!
");
flag=false;
}else{
System.out.println("noequals!
!
");
flag=false;
}
}
returnflag;
}
4根据下面的要求,编程实现复数类ComplexNumber:
1)属性:
m_dRealPart:
实部;m_dImaginPart:
虚部
2)构造方法:
ComplexNumber()以及ComplexNumber(doubler,doublei)
3)方法:
复数相加complexAdd(ComplexNumberc);toString()打印当前复数
进一步,编写一段程序,创建三个复数对象,打印其相加后的结果
答:
publicclassComplexNumber
{
doublem_dRealPart,m_dImaginPart;
publicComplexNumber()
{
this.m_dRealPart=0;
this.m_dImaginPart=0;
}
publicComplexNumber(doubler,doublei){
this.m_dRealPart=r;
this.m_dImaginPart=i;
}
publicdoublegetReal()
{
returnthis.m_dRealPart;
}
publicdoublegetImage()
{
returnthis.m_dImaginPart;
}
publicdoublegetReal(ComplexNumberc)
{
returnc.m_dRealPart;
}
public