Java练习题1(第1页共14页)Java程序设计练习题(1)一、单项选择题1.下面(B)是合法的Java标识符。A、#_poundB、_underscoreC、5InterstateD、class2.下面(D)赋值语句不会出现编译警告或错误。A、floatf=1.3;B、charc=a;C、byteb=257;D、inti=10;3.编译一个定义了两个类和三个方法的Java源程序文件,总共会产生(D)个字节码文件。A、5个字节码文件,以“.java”为扩展名B、2个字节码文件,以“.java”为扩展名C、5个字节码文件,以“.class”为扩展名D、2个字节码文件,以“.class”为扩展名4.有关类的说法,正确的是(B)。A、类具有封装性,所以类的数据是不能被访问的B、类具有封装性,但可以通过类的公共接口访问类中的数据C、声明一个类时,必须使用public修饰符D、每个类中必须有main方法,否则程序无法运行5.执行完下面程序片段后,(B)的结论是正确的。inta,b,c;a=1;b=2;c=(a+b3?a++:b++);A、a的值是2,b的值是3B、a的值是1,b的值是3C、a的值是1,b的值是2D、c的值是false6.将类的成员的访问权限设置为默认的,则该成员能被(A)。A、同一包中的类访问B、其他包中的类访问C、所有的类访问D、所有的类的子类访问7.下面的方法重载,正确的是(C)。A、intfun(inta,floatb){}B、floatfun(inta,floatb){}floatfun(inta,floatb){}floatfun(intx,floaty){}C、floatfun(floata){}D、floatfun1(inta,floatb){}floatfun(floata,floatb){}floatfun2(inta,floatb){}8.下面关于继承的说法,正确的是(D)。A、超类的对象就是子类的对象B、一个类可以有几个超类C、一个类只能有一个子类D、一个类只能有一个超类9.下面关于多态性的说法,正确的是(C)。A、一个类中不能有同名的方法Java练习题1(第2页共14页)B、子类中不能有和父类中同名的方法C、子类中可以有和父类中同名且参数相同的方法D、多态性就是方法的名字可以一样,但返回的类型必须不一样10.关于下面程序,(A)的结论是正确的。classJ_SubClassextendsJ_Test{}publicclassJ_Test{J_Test(inti){System.out.println(i);}publicstaticvoidmain(String[]args){J_SubClassa=newJ_SubClass();}}A、不能通过编译,因为类J_Test没有定义无参数的构造方法B、不能通过编译,因为类J_SubClass没有定义无参数的构造方法C、不能通过编译,因为没有实现J_SubClass(inti)的构造方法D、可以成功通过编译11.关于下面程序片段,(B)的结论是正确的。Stringa=Java;Stringb=Java;Stringx=Ja;Stringy=va;Stringc=x+y;A、a和b指向同一个实例对象,a和c指向同一个实例对象B、a和b指向同一个实例对象,a和c不指向同一个实例对象C、a和b不指向同一个实例对象,a和c指向同一个实例对象D、a和b不指向同一个实例对象,a和c不指向同一个实例对象12.假设下面的程序代码都放在MyClass.java文件中,(D)程序代码能够编译通过。A、importjava.awt.*;B、packagemypackage;packagemypackage;importjava.awt.*;classMyClass{}publicclassmyClass{}C、intm;D、/*Thisisacomment*/packagemypackage;packagemypackage;importjava.awt.*;importjava.awt.*;classMyClass{}publicclassMyClass{}Java练习题1(第3页共14页)13.当需要在文件中写入字符而不是字节时,在下面的类中最好选用(B)类。A、java.io.RandomAccessFileB、java.io.PrintWriterC、java.io.PrintStreamD、java.io.PrintOutputStream14.关于事件监听,正确的是(C)。A、一个事件监听器只能监听一个组件B、一个事件监听器只能监听处理一种事件C、一个组件可以注册多个事件监听器,一个事件监听器也可以注册到多个组件上D、一个组件只能引发一种事件二、填空题1.Class类是由Java编译器自动生成的,它伴随每个类。2.任何一个Java程序都默认引入一个包,这个包的名字是java.lang。3.在Java语言中,有一个类是所有类或接口的父类,这个类的名称是java.lang.Object。4.在Java中所实现的二维数组,实际上是由一维数组构成的数组。5.在Java中,字符串是作为对象出现的。6.接口可以看作是仅容纳抽象方法、常量,而又不能直接生成对象的特殊抽象类。7.FileInputStream是字节流,BufferedWriter是字符流,ObjectOutputStream是对象流。8.在Java中,组件不能独立地显示出来,必须将组件放在一定的容器中才能显示。9.Applet是能够嵌入到HTML格式中的文件,并能够在浏览器中运行的Java类。三、判断题1、Java程序一般应当含有main方法,因为它是所有Java程序执行的入口。(×)2、Java语言的标识符是不区分大小写的。(×)3、Java语言为所有的Java程序自动导入包“java.lang”,因此Java程序可以直接用“java.lang”中的类和接口。位于类继承关系层次结构树的根部的类Object就是在包“java.lang”中的类。(√)4、有时候为了避免引起混淆,构造方法的方法名可以不与所属类名同名。(×)5、Java语言规定,任何一个子类的构造方法都必须调用其父类的构造方法(包括隐式调用),并且调用父类构造方法的语句必须是子类构造方法的第一条语句。(√)6、Java语言对内存的释放是采用垃圾回收机制。Java虚拟机自动判断并收集“垃圾”,但一般不会立即释放它们的存储空间。(×)7、在编译Java源程序时,计算机根本不会去识别各个变量名的具体含义,因此命名规范对编写Java程序而言不是必要的,而且有可能会降低编写Java源程序的效率。(×)四、程序改错题1、请改正程序中的错误,使它得到正确的结果。Java练习题1(第4页共14页)【操作说明】如下java源程序文件中“/*$1*/”行中的语句有错误,请改正。(注意:不改动程序的结构,不得增行或删行)【运行结果】CallConstructorofBaseClass,1CallConstructorofDerivedClass,2【程序代码】classBase{publicBase(inti){System.out.println(CallConstructorofBaseClass,+i);}}classTestextendsBase{privateintb;publicTest(inta,intb){Base(a);/*$1*/super(a);System.out.println(CallConstructorofDerivedClass,+b);}publicstaticvoidmain(String[]args){Testobj=newTest(1,2);}}2、请改正程序中的错误,使它得到正确的结果。【操作说明】如下java源程序文件,该文件中“/*$1*/”行中的语句有错误,请改正。(注意:不改动程序的结构,不得增行或删行)【运行结果】30【程序代码】publicclassTest{privateintvalue;publicvoidTest(intn)/*$1*/publicTest(intn){value=n;}publicintgetMax(intx,inty){if(x=y&&x=value)returnx;elseif(y=value)returny;elsereturnvalue;Java练习题1(第5页共14页)}publicstaticvoidmain(String[]args){Testobj=newTest(10);System.out.println(obj.getMax(20,30));}}五、程序填空题1、请完善程序,使它得到正确的结果。【操作说明】如下java源程序文件中,定义了Bicycle类及其子类MountainBike类,Bicycle类的成员变量model只能被类自身的方法所访问。该文件中“/*$1*/”和“/*$2*/”行是需要补充的语句,请仔细阅读程序,补充相应的语句,使整个程序能够正常运行。(注意:不改动程序的结构,不得增行或删行)【运行结果】China-GIANTATX-660【程序代码】classBicycle{protectedStringmake;//生产厂家/*$1*/Stringmodel;//型号privatepublicBicycle(Stringmake,Stringmodel){this.make=make;this.model=model;}publicStringtoString(){return(make++model);}}classMountainBikeextendsBicycle{publicbooleanhasSuspension;//悬挂publicMountainBike(Stringmake,Stringmodel,booleanhasSuspension){/*$2*/super(make,model);this.hasSuspension=hasSuspension;}}publicclassTest{publicstaticvoidmain(String[]args){MountainBikegiant=newMountainBike(China-GIANT,ATX-660,true);System.out.println(giant);}}2、请完善程序,使它得到正确的结果。【操作说明】Java练习题1(第6页共14页)如下java源程序文件中,程序的功能是输入x,按下列公式求分段函数g(x)的值。202000675.0)(≤≤−=xxxxxxxg该文件中“/*$1*/”、“/*$2*/”和“/*$3*/”行是需要补充的语句,请仔细阅读程序,补充相应的语句,使整个程序能够正常运行。(注意:不改动程序的结构,不得增行或删行)【运行结果】请输入x的值:9↙g(9.0)=3.0【程序代码】importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){/*$1*/Scannerscanner=newScanner(System.in);doublex,y;System.out.println(请输入x的值:);x=scanner.nextDouble();if(x0)y=0.75*x;elseif(/*$2*/)x=20y=/*$3*/Math.sqrt(x);elsey=x-6;System.out.println(g(+x+)=+y);}}六、程序阅读题1、以下程序代码存放在文件Two.java中,读程序,写出编译和运行该程序时的输出结果。publicclassTwo{publicstaticvoidmain(String[]args){Oneone=newOne(Hello);one.getString(Xiaomi