java训练题二答案.docx
《java训练题二答案.docx》由会员分享,可在线阅读,更多相关《java训练题二答案.docx(13页珍藏版)》请在冰豆网上搜索。
java训练题二答案
训练题二
一、选择题
1.下列哪种类成员修饰符的变量只能在本类中被访问?
(D)
A.protectedB.publicC.defaultD.private
2.在java语言的哪一个包是编译器自动导入的?
(A)
A.java.langB.java.awtC.jva.ioD.java.applet
3.给出下面的程序代码:
classTest3{privatefloata;
publicstaticvoidm()
{//…
}
}
如何使成员变量a被方法m()直接访问?
(C)
A.将privatefloata改为protectedfloata B.将privatefloata改为publicfloata
C.将privatefloata改为staticfloataD.将privatefloata改为floata
4.已知有下面的类说明:
publicclassTest4
{privatefloatf=1.0f;.
intm=12;
staticintn=1;
publicstaticvoidmain(String[]args)
{Test4e=newTest4();
}
}
在main()方法中,下面哪个的使用是正确的(A)?
A.e.fB.this.nC.Test4.mD.Test4.f
5.有一个类A,下面为其构造函数的声明,其中正确的是(B)。
A.voidA(intx){…}B.A(intx){…}
C.a(intx){…}D.voida(intx){…}
6.在下面的程序源代码文件Test6.java中,哪个是正确的类的定义?
(B)
A.publicclasstest6{B.publicclassTest6{
publicintx=0;publicintx=0;
publictest(intx)publicTest6(intx)
{this.x=x;{this.x=x;
}}
}}
B.classT1{}D.classT2{}
classT2{}protectedclassTest6extendsT2
publicclassTest6extendsT1,T2{publicintx=0;
{publicintx=0;publicTest6(intx)
publicTest6(intx){this.x=x;
{this.x=x;}}
}}
7.main()方法是Java Application程序执行的入口点,关于main()方法的方法头下面哪一项是合法的?
(B)
A.publicstaticvoidmain()B.publicstaticvoidmain(Stringargs[])
B.publicstaticintmain(String[]arg)D.publicvoidmain(Stringargs[])
8.下列程序的执行结果是(A)
publicclassTest8
{publicvoidaMethod()
{staticinti=0;
i++;
System.out.println(i);
}
publicstaticvoidmain(Stringargs[])
{Test8obj=newTest8();
obj.aMethod();
}
}
A.编译错误B.0C.1D.运行成功,但不输出
9.下面哪一项的方法调用能填入程序中的横线外?
(C)
classCC9
{staticvoidmethod()
{System.out.println(“inCC9”);}
}
classCC9_1
{voidmethod()
{System.out.println(“inCC9_1”);}
}
publicclassex9
{publicstaticvoidmain(String[]args)
{ex9e=newex9();
e.method();
}
publicvoidmethod()
{CC9o1=newCC9();
CC9_1o2=newCC9_1();
___________
___________
}
}
A.o1.method();B.CC9.method();C.CC9.method();D.o1.method();
ex9.method();CC9_1.method();o2.method();CC9_1.method();
10.为了区分类中重载的同名的不同方法,要求(A)
A.采用不同的形式参数列表B.使用不同的参数名
C.修改访问权限D.返回值的数据类型不同
11.若需要定义一个静态域,应使用哪一个修饰符?
(A)
A.staticB.synchronizedC.privateD.protected
12.设i,j为类X定义的double型成员变量名,下列X的构造函数中不正确的是(D)
A.X(doublek){i=k;}B.X(doublem,doublen){i=m;j=n;}
C.X(){i=6;}D.doubleX(doublek){i=k;returni;}
13.设A为已定义的类名,则下列声明A类的对象a的语句中正确的是(A)
A.publicAa=newA();B.publicAa=A();
C.Aa=newclass();D.aA;
14.为AB类的一个无返回值的方法method书写方法头,使得使用类名,AB作为前缀就可以调用它,该方法头的形式为(D)
A.abstractvoidmethod()B.publicvoidmethod()
C.finalvoidmethod()D.staticvoidmethod()
15.下面哪个保留字可以定义常量变量,说明这个变量赋值后永不改变?
(C)
A.protectedB.staticC.finalD.super
16.下列哪个不是创建数组的正确语句?
(C)
A.floatf[][]=newfloat[6][6];B.float[]f[]=newfloat[6][6];
C.floatf[][]=newfloat[][6];D.float[][]f=newfloat[6][];
17.设X,Y为已定义的类名,下列声明X类的对象x1的语句中正确的是(A)
A.staticXx1;B.publicYx1=newX(int123);
C.Yx1;D.Xx1=X();
18.下列关于类说法不正确的是(D)
A.类是同种对象的集合和抽象B.类属于Java语言中的复合数据类型
C.对象是Java语言中的基本的结构单位D.类就是对象
19.下面关于Java语言中的方法说法不正确的是(C)
A.Java中的方法的参数传递是传值调用,而不是地址调用
B.方法体是对方法的实现,包括变量声明和Java合法语句
C.如果程序定义了一个或多个构造方法,在创建对象时,也可以用系统自动生成空的构造方法
D.类的私有方法不能被其子类直接访问
解析:
如果程序定义了一个或多个构造函数,在创建对象时,必须用自定义的构造方法来初始化,若没有定义构造方法,则使用默认的构造方法。
20.类的另一种说法是(B)
A.对象B.模板C.实例D.接口
21.Java语言有自动收集垃圾的功能,会周期性地回收一些长期不用的对象占用的内存。
下列哪项是对象的清除的途径?
(B)
(1)依靠Java的垃圾回收机制回收内存
(2)调用System.gc(),请求垃圾回收
(3)Java系统开始运行时,自动调用java.Object.finalize()释放内存
(4)在程序中调用重写的finalize()释放系统资源,其格式为:
protectedvoidfinalize()throwsthrowable{
…
Super.finalize();
}
A.
(1)
(2)B.
(1)
(2)(3)(4)C.
(1)
(2)(3)D.
(2)(3)(4)
解析:
考查Java语言的自动收集垃圾功能,垃圾回收用于对象的清除,题干中给出的4种垃圾回收的方法,都是可行的方法,因此选B
22.在Java中,数组是当成(B)处理的
A.类B.对象C.接口D.简单数据类型
解析:
在Java中,数组是作为对象处理的;所以就有数组的定义、创建和初始化的概念,体现了Java语言面向对象的特点。
二、填空题
1.方法头的关键字void用来表示方法不返回任何值。
2.写出下列程序的运行结果。
已知:
字符‘a’转换成整数对应的是97。
程序如下:
publicclassC2
{publicstaticvoidmain(String[]args)
{chara=‘d’;
intb=a;
floatc=a;
doubled=a;
System.out.println(“a=”+a);
System.out.println(“b=”+b);
System.out.println(“c=”+c);
System.out.println(“d=”+d);
}
}
执行结果应是:
a=d
b=100
c=100.0
d=100.0
3.下面是一个类的定义,试将程序补充完整。
classA
{Strings;
staticinta=66;
A(Strings1)
{s=s1;}
staticintgetA()
{returna;}
}
4.下面是一个类的定义程序,请将程序补充完整。
publicclassMyClass
{intx,y;
MyClass(inti,intj)
{x=i;y=j;}
}
5.通过“.”运算符实现对成员变量的访问和方法调用。
6.变量的属性用于描述变量的作用域,按作用域分类,变量有局部变量、类变量、
方法参数变量和异常处理参数。
7.一个对象的生命周期有3个阶段:
生成、使用和清除。
解析:
(1)生成:
包括声明、实例化和初始化。
(2)使用:
先定义后使用的原则。
(3)清除:
释放对象所占的内存,利用Java的自动收集垃圾功能。
8.对象是一组相关变量和方法的封装体,对象的特征是对象的行为、状态和身份。
9.一个类的定义分为类注释、类声明和类体的定义。
解析:
需知道一个类的定义分为类注释、类声明和类体的定义,其中类注释比较容易遗忘。
10.通过类MyClass中的不含参数的构造函数,生成该类的一个对象obj,可通过以下语句实现:
MyClassobj=newMyClass();
11.在Java程序中,创建新的类对象用关键字new。
12.构造方法是类中的一种特殊方法,它用来定义对象的初始状态。
13.对象是一组相关变量和相关方法的封装体,是类的一个实例化。
14.修饰符可分为访问限定符和非访问限定符两类。
15.访问限定符有public、protected,private和default等。
解析:
访问限定符是限定类、属性或方法被程序里的其他部分访问和调用的修饰符,有public,protected,private和default等。
16.非访问限定符有static、final、synchronized和abstract等。
三、简答题
1.什么是类?
如何定义一个类?
类中包含哪几部分,分别是什么?
答案:
见实验指导书。
2.什么是对象?
如何创建对象?
答案:
见实验指导书。
3.什么是构造方法?
构造方法有哪些特点?
答案:
见实验指导书。
4.如何对对象进行初始化?
答案:
见实验指导书。
5.静态方法与非静态方法有什么区别?
答案:
见实验指导书。
6.final成员变量和方法有什么特点?
答案:
见实验指导书。
四、编程题
1.仔细阅读下面的应用程序Person,写出其Student类程序的内容。
publicclassPerson
{
publicstaticvoidmain(String[]args)
{
Students1,s2;
s1=newStudent(“李明”,1.87);
s2=newStudent(“宁普”,1.85);
if(s1.getHeight()>s2.getHeight())
System.out.println(s1.getName()+”比”+s2.getName()+”轻。
”);
}
}
完善后的程序如下:
publicclassPerson
{
publicstaticvoidmain(String[]args)
{
Students1,s2;
s1=newStudent("李明",1.87);
s2=newStudent("宁普",1.85);
if(s1.getHeight()>s2.getHeight())
System.out.println(s1.getName()+"比"+s2.getName()+"高。
");
}
}
classStudent
{
privateStringname;
privatedoubleheight;
publicStudent(Stringname,doubleheight)
{
this.name=name;
this.height=height;
}
publicStringgetName()
{
returnname;
}
publicdoublegetHeight()
{
returnheight;
}
}
2.改正下面程序的错误并写出运行结果。
publicclassPerson//把这行的public去掉,一个程序中只能有一个public类
{
privateStringname;
staticintID;
publicPerson(Stringname)
{name=name;//把这里改成this.name=name;
}
publicStringgetName()
{
returnname;
}
staticvoidsetID()
{
ID++;
}
}
publicclassPeople
{
publicstaticvoidmain(String[]args)
{
Personp1=newPerson(“王强”);
Person.ID++;
System.out.println(p1.name+p1.ID);
//上行的p1.name错(因为name是私有的),应改为p1.getName()
Personp2=newPerson(“李明”);
Person.setID();
System.out.println(p2.name()+Person.ID);
//上行的p2.name()应改成p2.getName()
}
}
3.已知有如下类的定义:
publicclassPoint
{
privatedoublex,y;
publicPoint(doublea,doubleb)
{
x=a;
y=b;
}
publicdoublegetX()
{
returnx;
}
publicdoublegetY()
{
returny;
}
}
编写一个测试类TestPoint,在此类中定义一个方法,此方法的方法头如下:
publicdoubledistance(Pointp1,Pointp2):
此方法的求两点p1和p2的距离。
在main方法中,自己设定两个点(x1,y1)和(x2,y2),并求这两个点的距离。
程序答案暂时略!
4.定义一个类A,类中有一个private的整型变量data;一个private的字符串对象str。
类中有两个构造函数,一个不含参数,初始化data和str为其缺省值;另一个有两个参数,分别用来初始化data和str。
类中还定义了三个方法,方法头的定义和其功能如下。
publicAadd(intk,Strings);该方法把data和str的值分别加上k和s。
publicAclearA();该方法把data和str的值分别清除为其缺省值。
publicStringtoString();该方法把data和str的值转变为字符串返回,便于显示。
编写类TestA测试类A,创建类A对象并使用类A的三个方法。
程序如下:
classA
{privateintdata;
privateStringstr;
publicA()
{data=0;
str=null;
}
publicA(intdata,Stringstr)
{this.data=data;
this.str=str;
}
publicAadd(intk,Strings)
{this.data=this.data+k;
this.str=this.str+s;
returnthis;
}
publicAclearA()
{this.data=0;
this.str=null;
returnthis;
}
publicStringtoString()
{return“data=”+data+”\n”+”str=”+str;
}
}
publicclassTestA
{publicstaticvoidmain(String[]args)
{TestAt1=newTestA();
System.out.println(t1.toString());
t1.add(12,”AAA”);
System.out.println(t1.toString());
t1.clearA();
System.out.println(t1.toString());
TestAt2=newTestA(100,”BBB”);
System.out.println(t2.toString());
t2.add(12,”AAA”);
System.out.println(t2.toString());
t2.clearA();
System.out.println(t2.toString());
}
}
Thefurthestdistanceintheworld
Isnotbetweenlifeanddeath
ButwhenIstandinfrontofyou
Yetyoudon'tknowthat
Iloveyou.
Thefurthestdistanceintheworld
IsnotwhenIstandinfrontofyou
Yetyoucan'tseemylove
Butwhenundoubtedlyknowingthelovefromboth
Yetcannotbetogether.
Thefurthestdistanceintheworld
Isnotbeingapartwhilebeinginlove
ButwhenIplainlycannotresisttheyearning
Yetpretendingyouhaveneverbeeninmyheart.
Thefurthestdistanceintheworld
Isnotstrugglingagainstthetides
Butusingone'sindifferentheart
Todiganuncrossableriver
Fortheonewholovesyou.