Java语言及面向对象技术复习资料.docx
一、单项选择题。1、下列哪个是Java应用程序主类中正确的main方法?( )Apublic void main(String args)Bstatic void main(String args)Cpublic static void Main(String args)Dpublic static void main(String args)2、下列哪项是正确的float变量的声明?( )Afloat foo=-1; Bfloat foo=1.0; Cfloat foo=2.02f; Dfloat foo=0x0123;3、对于int a=new int3;下列哪个叙述是错误的?( )Aa.length的值是3。 Ba1的值是1。Ca0的值是0。 Daa.length-1的值等于a2的值。4、下列哪个叙述是正确的?( )A5.0/2+10的结果是double型数据。B(int)5.8+1.0的结果是int型数据。C苹+果的结果是char型数据。D(short)10+a的结果是short型数据。5、对于下列Hello类,哪个叙述是正确的?( )AHello类有2个构造方法。BHello类的int Hello()方法是错误的方法。CHello类没有构造方法。DHello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。class Hello Hello (int m) int Hello() Return 20;hello() 6、下列哪个叙述是正确的?( )A成员变量的名字不可以和局部变量的名字相同。B方法的参数的名字可以和方法中声明的局部变量的名字相同。C成员变量没有默认值。D局部变量没有默认值。7、下列哪个叙述是正确的?( )A子类继承父类的构造方法Babstract类的子类必须是非abstract类C子类继承的方法只能操作子类继承和隐藏的成员变量 D子类重写或新增的方法也能直接操作被子类隐藏的成员变量 8、下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?( )class A static int m; static void f() m=20; /Aclass B extends A void f() /B m=222; /C class E public static void main(String args) A.f(); 9、将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?( )Apublic float getNum() return 4.0f;Bpublic void getNum() ;Cpublic void getNum(double d) Dpublic double getNum(float d) return 4.0d;class A public float getNum() return 3.0f;public class B extends A 【代码】10、下列哪个叙述是正确的?( )A. 一个类最多可以实现两个接口B. 如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法C. 如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法D. 允许接口中只有一个抽象方法二、程序填空题。1、public class TV int channel; /电视频道 void setChannel(int m) if(m>=1) channel=m; int getChannel() 【代码1】/ 返回成员变量的值 void showProgram() switch(channel) case 1 : System.out.println("综合频道"); break; case 2 : System.out.println("经济频道"); break; case 3 : System.out.println("文艺频道"); break; case 4 : System.out.println("国际频道"); break; case 5 : System.out.println("体育频道"); break; default : System.out.println("不能收看"+channel+"频道"); public class Family TV homeTV; void buyTV(TV tv) 【代码2】/将参数tv赋值给homeTV void remoteControl(int m) 【代码3】/调用setChannel()方法 void seeTV() 【代码4】/调用showProgram()方法 public class MainClass public static void main(String args) TV haierTV = new TV(); 【代码5】 /haierTV调用setChannel(int m),并向参数m传递5 System.out.println("haierTV的频道是"+haierTV.getChannel(); Family zhangSanFamily = new Family(); 【代码6】/zhangSanFamily调用void buyTV(TV tv)方法,并将haierTV传递给参数TV System.out.println("zhangSanFamily开始看电视节目"); zhangSanFamily.seeTV(); int m=2; System.out.println("hangSanFamily将电视更换到"+m+"频道"); zhangSanFamily.remoteControl(m); System.out.println("haierTV的频道是"+haierTV.getChannel(); System.out.println("hangSanFamily再看电视节目"); zhangSanFamily.seeTV(); 2、abstract class Employee public abstract double earnings();class YearWorker extends Employee 【代码1】 /重写earnings()方法class MonthWorker extends Employee 【代码2】 /重写earnings()方法class WeekWorker extends Employee public void earnings() return 52*780;class Company Employee employee; double salaries=0; Company(Employee employee) this.employee=employee; public double salariesPay() salaries=0;for (int i=0;i<employee.length;i+ ) salaries=salaries+employeei.earnings(); return salaries; public class CompanySalary public static void main(String args) 【代码3】/公司有29名雇员 【代码4】 /雇员简单地分成三类 if(i%3=0) employeei=new WeekWorker(); else if(i%3=1) employeei=new MonthWorker(); else if(i%3=2) employeei=new YearWorker(); Company company=new Company(employee); System.out.println("公司薪水总额:"+company.salariesPay()+"元"); 三、阅读程序写结果题。1、Public class E Public static void main (String args) Int x=1,y=6;While (y->0) x-;System.out.print(“x=”+x+”,y=”+y); 2、class B int n; static int sum=0; void setN(int n) this.n=n;int getSum() for (int i=1;i<=n;i+) sum=sum+i; return sum;public class A public static void main(String args) B b1=new B(),b2=new B();b1.setN(3);b2.setN(5);int s1=b1.getSum();int s2=b2.getSum();System.out.println(s1+s2); 3、请说出E类中【代码1】【代码4】的输出结果。class A double f(double x,double y) return x+y; static int g(int n) return n*n; class B extends A double f(double x,double y) double m=super.f(x,y);return m+x*y; static int g(int n) int m=A.g(n);return m+n; public class E public static void main(String args)B b=new B();System.out.println(b.f(10.0,8.0); /【代码1】System.out.println(b.g(3); /【代码2】A a=new B();System.out.println(a.f(10.0,8.0); /【代码3】System.out.println(a.g(3); /【代码4】 【代码1】 【代码2】 【代码3】 【代码4】 四、编程题1。编写应用程序,输出满足1+2+3+n<8888的最大正整数n。五、编程题2。设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。l 编写抽象类AnimalAnimal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称。l 编写模拟器类Simulator该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal可以调用Animal的子类的重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。l 编写Animal类的子类:Dog和Cat类下图是Simulator、Animal、Dog、Cat的UML图。SimulatorplaySound(Animal):voidAnimalcry():voidgetAnimalName():StringDogcry():voidCatcry():void部分答案一、单项选择题。题号12345678答案DBBADDCB二、程序填空题。1、【代码1】return channel;【代码2】homeTV = tv;【代码3】homeTV.setChannel(m);【代码4】homeTV.showProgram();2、【代码1】public void earnings() return 12000;【代码2】public void earnings() return 12*2300;三、阅读程序写结果题。1、答:x=-5,y=-12、答:273、答:【代码1】98.0【代码2】12四、编程题1。public class Xiti6 public static void main(String args) int n=1;long sum=0;while (true) sum=sum+n; n+; if (sum>=8888) break; System.out.println(“满足条件的最大整数:”+(n-1); 五、编程题2。答:Animal.javapublic abstract class Animal public abstract void cry(); public abstract String getAnimalName();Simulator.javapublic class Simulator public void playSound(Animal animal) System.out.print(”现在播放”+animal.getAnimalName+”类的声音:”); animal.cry(); Dog.javapublic class Dog extends Animal public void cry() (1分) System.out.println(“汪汪汪汪”); public String getAnimalName() return “狗”;Cat.javapublic class Cat extends Animal public void cry() (1分) System.out.println(“喵喵喵喵”); public String getAnimalName() return “猫” Application.javapublic class Example public static void main(String args) Simulator simulator=new Simulator(); Simulator.playSound(new Dog(); Simulator.playSound(new Cat(); (注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)