java语言与面向对象技术复习资料.docx
《java语言与面向对象技术复习资料.docx》由会员分享,可在线阅读,更多相关《java语言与面向对象技术复习资料.docx(14页珍藏版)》请在冰点文库上搜索。
java语言与面向对象技术复习资料
一、单项选择题。
1、下列哪个是Java应用程序主类中正确的main方法?
()
A.publicvoidmaiii(Sti-iiigargs[])
B.staticvoidmaiii(Striiigargs[])
C.publicstaticvoidMain(Stringargs[])
D.publicstaticvoidmain(Stringargs[])
2、下列哪项是正确的float变量的声明?
()
A.floatfoo=-l;B.floatfoo=1.0;
C.floatfoo=2.02f;D.floatfoo=0x0123;
3、对于inta[]二newint[3];下列哪个叙述是错误的?
()
A.a.length的值是3。
B.a⑴的值是1。
C.a[0]的值是0。
D.a[a.length-l]的值等于a[2]的值。
4、下列哪个叙述是正确的?
()
A.5.0/2+10的结果是double型数据。
B.(int)5.8+1.0的结果是int型数据。
C.,苹W果,的结果是char型数据。
D.(short)10+'a‘的结果是short型数据。
5、对于下列Hello类,哪个叙述是正确的?
()
A.Hello类有2个构造方法。
B.Hello类的iiitHello()方法是错误的方法。
C.Hello类没有构造方法。
D.Hell。
无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
classHello{
Hello(intm){
}
iiitHello(){
Return20;
}
helloO{
}
}
6、下列哪个叙述是正确的?
()
A.成员变量的名字不可以和局部变量的名字相同。
B.方法的参数的名字可以和方法中声明的局部变量的名字相同。
C.成员变量没有默认值。
D.局部变量没有默认值。
7、下列哪个叙述是正确的?
()
A.子类继承父类的构造方法
B.abstract类的子类必须是非abshact类
C.子类继承的方法只能操作子类继承和隐藏的成员变量
D.子类重写或新增的方法也能直接操作被子类隐藏的成员变量
8、下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?
()
classA{
staticintm;
staticvoidfQ{
m=20;//A
}
}
classBextendsA{
voidf()//B
{m=222;//C
}
}
classE{
publicstaticvoidmain(Stringargs[]){
A.f();
}
}
9、将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?
()
A・publicfloatgetNumO{return4・0f;}
B・publicvoidgetNumO{};
C・publicvoidgetNum(doubled){}
D・publicdoublegetNum(floatd){return4.0d;}
classA{
publicfloatgetNumO{
return3・Of;
}
}
publicclassBextendsA{
【代码】
}
10、下列哪个叙述是正确的?
()
A.一个类最多可以实现两个接口
B.如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法
C.如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法
D.允许接口中只有一个抽象方法
二、程序填空题。
1、publicclassTV{
iiitchannel;〃电视频道
voidsetChamiel(intm){
if(m>=l){cliaimel=m;
}
}
iiitgetChannel(){
[代码1]//返回成员变量的值
}
voidshowProgiam(){
switch(cliaimel){
case1:
System.out.println("综合频道”);
break;
case2:
System.out.println("经济频道”);
break;
case3:
System.out.println("文艺频道”);
break;
case4:
System.out.prmtln(H国际频道”);
break;
case5:
System.out.println("体育频道”);
break;
default:
System.out.priiitlnC,不能收看"+channel+”频道”);
}
}
}
publicclassFamily{
TVhoineTV;
voidbuyTV(TVtv){
[代码2】//将参数tv赋值给homeTV}
voidremoteControl(intm){
[代码3】〃调用setChannel()方法
}
voidseeTV(){
【代码4】//调用showProgramO方法
}
publicclassMaiiiClass{
publicstaticvoidmain(Stringargs[]){
TVhaimTV=newTV();
[代码5]
//haierTV调用setChamiel(iiitm),并向参数m传递5
System.out.priiitlii("haierT\r的频道是"+haierTV.getChannel());
FamilyzhaiigSanFamily=newFamily。
;[代码6]//zliangSaiiFaniily调用voidbuyTV(TVtv)方法,并将haierTV传递给参数TV
System.out.println(HzhangSanFamily开始看电视节UH);zhangSaiiFamily.seeT\r();
iiitm=2;
System.out.prmtliiC'liangSaiiFamily将电视更换至频道”);zhangSaiiFamily.remoteControl(m);
System.out.priiitlii("haierT\r的频道是"+haierTV.getChannel());System.out.priiitlii(HhangSaiiFamily再看电视节UH);zhangSaiiFamily.seeT\r();
}
}
2、absti-actclassEmployee{
publicabstractdoubleeaniings();
}
classYearW^rkerextendsEmployee{
【代码1】〃重写eaniiiigs()方法
}
classMonthWorkei'extendsEmployee{
【代码2】〃重写eaniiiigs()方法
}
classWeekWorkerextendsEmployee{
publicvoideaniiiigsO{
return52*780;
classCompany{
Employeef]employee;doublesalaries=O;
Company(Employee[]employee){
this.employee=employee;
publicdoublesalariesPay(){salaries=0;
for(inti=0;isalaries=salanes+employee[i].eaniings();
retxinisalaries;
publicclassCompanySalaiy{
publicstaticvoidmain(Stringargs[]){
【代码3】//公司有29名雇员
【代码4】{〃雇员简单地分成三类
if(i%3==0)
employee[i]=newWeekWorkei();elseif(i%3==l)
employee[i]=newMonthWorker0;elseif(i%3==2)
employee[i]=newYearWorker();
Companycompany=newCompany(employee);
System.out.priiitlii(H公司薪水总额:
"+comp2my・salju・iesPay()+”元");
三、阅读程序写结果题。
1、PublicclassE{
Publicstaticvoidmain(String[]args){
hitx=l,y=6;
While(y->0){
X";
}
System.out.print(“x=”+x+'',尸”+y);
}
}
2、classB{
intn;
staticintsum=0;
voidsetN(intn){
this・n二n;
}
intgetSumO{
for(inti二1;i〈二n;i++)
sum=sum+i;
returnsum;
}
}
publicclassA{
publicstaticvoidmain(Stringargs[]){
Bbl=newB(),b2=newB();
bl.setN(3);
b2.setN(5);
intsl=b1.getSumO;
ints2=b2・getSumO;
System.out・printin(sl+s2);
}
}
3、请说出E类中【代码1】~【代码4】的输出结果。
classA{
doublef(doublex,doubley){
returnx+y;
staticintg(intn){
returnn*n;
}
}
classBextendsA{
doublef(doublex,doubley){
doublem=super・f(x,y);
returnm+x*y;
}
staticintg(intn){
intnpA.g(n);
returnm+n;
}
}
publicclassE{
//【代码1】
//【代码2】
//【代码3】
//【代码4】
publicstaticvoidmain(Stringargs[])Bb=newB();
System,out.printin(b.f(10.0,8.0));
System.out・printin(b・g(3));
Aa=newB();
System,out.printin(a.f(10.0,8.0));
System・out・printin(a.g(3));
}
}[代码1】[代码2]
[代码3】[代码4】
四、编程题1O
编写应用程序,输出满足1+2+3+-*n<8888的最大正整数11。
五、编程题2。
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
•编写抽象类Animal
Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称。
•编写模拟器类Simulator
该类有一个playSound(Animalanimal)方法,该方法的参数是Animal类型。
即参数animal可以调用Animal的子类的重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。
•编写Animal类的子类:
Dog和Cat类
下图是Simulator、Animal>Dog、Cat的UML图。
1
1
1
i
i
i
Dog
Cat
cry():
void
cry():
void
部分答案
•、单项选择题。
题号
1
■
3
4
5
6
7
8
答案
D
B
B
A
D
D
C
B
二、程序填空题。
1v【代码11returnchannel:
【代码2】homeTV=tv;
【代码3]homeTV.setChannel(m);
【代码4]homeTV.showProgram();
2、【代码1】publicvoidearnings(){return12000;
【代码2】publicvoidearnings(){
return12*2300;
}
三、阅读程序写结果题。
1、答:
x二-5,y二-1
2、答:
27
3、答:
【代码1]98.0
【代码2】12
四、编程题1O
publicclassXiti6{
publicstaticvoidmain(Stringargs[]){
iiitn=l;
longsum=0;
while(true){
sum=sum+n;
n++;
if(sum>=8888)break;
}
System.out.printin(“满足条件的最大整数:
”+(u-1));
}}
五、编程题2O
答:
Aiiimal.java
publicabstractclassAnimal{
publicabstractvoidcry():
publicabstractStringgetAnimalName():
}
Simulator・java
publicclassSimulator{
publicvoidplaySound(Animalanimal){
System,out.print(M现在播放”+animal.getAnimalName+°类的声音:
”);
anima1.cry();
}
}
Dog・java
publicclassDogextendsAnimal{
publicvoidcry(){(1分)
System,out.println(“汪汪…汪汪”);
}
publicStringgetAnimalName(){
return“狗”;
}
}
Cat・java
publicclassCatextendsAnimal{
publicvoidcry(){(1分)
System,out.printin("脚苗…临唯”);
}
publicStringgetAnimalName(){
return“猫”’
}
}
Application.java
publicclassExample{
publicstaticvoidmain(Stringargs[]){
Simulatorsimulator=newSimulator();
Simulator・playSound(newDog());
Simulator・playSound(newCat());
}
}