您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 分析《JAVA程序设计》期末考试试题_(二)
共6页,第页1《JAVA程序设计》期末考试试题(二)一.判断题1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)2.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。(×)分析:java中没有回收(FREE)内存的功能,它会自动回收的,只要把对象close掉就等着回收就行了.由于对象是使用new运算符动态分配的,java方法是自动为你的处理存储单元重新分配问题。完成这项工作的技术被称为无用单元收集(garbagecollection)。它的工作原理:当不存在对一个对象的引用时,我们就假定不再需要那个对象了,那个对象所占有的存储单元可以被收回。在java中并不像在C++中一样需要明确地销毁对象。无用单元收集仅在偶尔执行程序时出现。它不会出现,是因为存在一个或多个不再使用的对象。还有,不同的Java运行时实现将会使用不同的无用单元收集方法,但是在大多数情况下,在编程时不必考虑它。如果一个对象正在持有某些非Java资源,如文件处理或窗口字符字体,那么Java提供了一种称为结束(finalization)的机制。3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。(×)分析:不对,JAVA虽然有垃圾回收机制,但是不能在指定的时间释放内存对象,只能在程序运行期间,当虚拟机空闲的时候回收。4.构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。(×)分析:无返回类型5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。(√)分析:个人觉得原因是子类更加具体一些,可以更好得描述这个异常,所以会把子类写在前面,如果把父类写在前面,那么这个父类就会接受很多的异常了,后面的子类就接收不到了6.拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。(√)7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。(×)分析:左上角被确定为坐标的起点8.静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。(×)分析:并不是生成一个新对象,只是引用相同而已,真正的对象的空间是一样的.二.单项选择题1.Javaapplication中的主类需包含main方法,以下哪项是main方法的正确形参?()A、StringargsB、Stringar[]C、CharargD、StringBufferargs[]分析:比较常见的是String[]args,但是Stringargs[]也是可以的,ar和args并没有什么区别.共6页,第页22.以下关于继承的叙述正确的是()。A、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类不能同时继承一个类和实现一个接口D、在Java中接口只允许单一继承3.paint()方法使用哪种类型的参数?()A、GraphicsB、Graphics2DC、StringD、Color分析:这是GUI里面的,不考.4.以下哪个不是Java的原始数据类型()A、intB、BooleanC、floatD、char分析:java有八种基本数据类型,int4个字节short2个字节long8个字节byte2个字节float4个字节double8个字节字符类型布尔类型。对应这八种基本数据类型有八个封装类,封装类是继承自Object的Java类。而基本数据类型所描述的含义与C等相同。5.以下哪项可能包含菜单条()。A、PanelB、FrameC、AppletD、Dialog分析:这是GUI里面的,不考.6.若需要定义一个类域或类方法,应使用哪种修饰符?()A、staticB、packageC、privateD、public7.在浏览器中执行applet程序,以下选项中的哪个方法将被最先执行()。A、init()B、start()C、destroy()D、stop()分析:这是applet里面的,不考.8.给出下面代码,关于该程序以下哪个说法是正确的?()publicclassPerson{staticintarr[]=newint[5];publicstaticvoidmain(Stringa[]){System.out.println(arr[0]);}}A、编译时将产生错误B、编译时正确,运行时将产生错误C、输出零D、输出空分析:静态方法中调用静态变量是可以的,但是没有输入,所以会输出默认值0,9.下列哪些语句关于Java内存回收的说明是正确的?()共6页,第页3A、程序员必须创建一个线程来释放内存B、内存回收程序负责释放无用内存C、内存回收程序允许程序员直接释放内存D、内存回收程序可以在指定的时间释放内存对象10.以下哪个关键字可以用来对对象加互斥锁?()A、transientB、synchronizedC、serializeD、static11.以下代码段执行后的输出结果为()intx=-3;inty=-10;System.out.println(y%x);A、-1B、2C、1D、312.有以下程序片段,下列哪个选项不能插入到行1。()1.2.publicclassInteresting{3.//dosth4.}A、importjava.awt.*;B、packagemypackage;C、classOtherClass{}D、publicclassMyClass{}分析:报ThepublictypeMyClassmustbedefinedinitsownfile,MyClass要建在另一java文件中,一个java文件只允许有一个public(公有)的类,但如果把public去掉也是行的,一个java文件允许有多个空缺(友好)的类13.设有下面两个赋值语句:a=Integer.parseInt(“12”);b=Integer.valueOf(“12”).intValue();下述说法正确的是()。A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。C、a和b都是整数类对象并且值相等。D、a和b都是整数类型变量并且值相等。分析:Integer.parseInt()是把一个字符串转换成int类型的变,这里就是把字符串类型的12装换成int类型的12;staticvalueOf(inti)返回一个表示指定的int值的Integer实例。先把int转换成Integer类型,再执行intValue();共6页,第页4intintValue()以int类型返回该Integer的值。又装换成了一个int类型的12.14.FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?A、OutputStreamB、FileC、InputStreamD、BufferedOutputStream分析:理论上多层继承的类的构造方法一般选择最上层(最原始)的类.但是我查了API好像有点问题FilterOutputStream只有带File参数的构造方法.15.在编写JavaApplet程序时,需在程序的开头写上()语句。A、importjava.awt.*;B、importjava.applet.Applet;C、importjava.io.*;D、importjava.awt.Graphics;16.类Parent、Child定义如下:1.publicclassParent2.{publicfloataFun(floata,floatb)throws3.IOException{}4.}5.publicclassChildextendsParent{6.7.}将以下哪种方法插入行6是不合法的。()A、floataFun(floata,floatb){}B、publicintaFun(inta,intb)throwsException{}C、publicfloataFun(floatp,floatq){}D、publicintaFun(inta,intb)throwsIOException{}分析:测试A:报错:Multiplemarkersatthisline-CannotreducethevisibilityoftheinheritedmethodfromParent意识就是不能减小继承后重写的方法的访问权限修改办法就是在float前面加上public17.在使用interface声明一个接口时,只可以使用()修饰符修饰该接口。A、privateB、protectedC、privateprotectedD、public18、有以下方法的定义,请选择该方法的返回类型()。ReturnTypemethod(bytex,doubley)共6页,第页5{return(short)x/y*2;}A、byteB、shortC、intD、double分析:注意,(short)x/y*2;这个short只是作用于x若要选B,修改办法是return(short)(x/y*2);19、关于以下代码段的说法正确的是()1.Strings=abcde;2.StringBuffers1=newStringBuffer(abcde);3.if(s.equals(s1))4.s1=null;5.if(s1.equals(s))6.s=null;A、第1行编译错误,String的构造器必须明确调用B、第3行编译错误,因为s与s1有不同的类型C、编译成功,但执行时在第5行有异常抛出D、编译成功,过程中也没有异常抛出分析:s1.equals(s)只是比较两个对象中的字符是否相等,与对象类型无关publicbooleanequals(ObjectanObject)将此字符串与指定的对象比较。当且仅当该参数不为null,并且是与此对象表示相同字符序列的String对象时,结果才为true。20、编译并运行以下程序,以下描述哪个选项是正确的()1.classX{2.protectiedStringtoString()i{3.returnsuper.toString();}4.}A、编译通过运行无异常B、编译通过但运行时出错C、行2出错,不能成功编译D、不能成功编译,行3出错分析:protectiedStringtoString()i{这里多了个i三.程序阅读题1.以下程序的输出结果为相等。classStringTest1{共6页,第页6publicstaticvoidmain(String[]args){Strings1=hello;Strings2=newString(hello);if(s1.equals(s2)){System.out.println(相等);}else{System.out.println(不相等);}}}分析:s1.equals(s)只是比较两个对象中的字符是否相等,与对象类型无关publicbooleanequals(ObjectanObject)将此字符串与指定的对象比较。当且仅当该参数不为null,并且是与此对象表示相同字符序列的String对象时,结果才为true。Strings1=hello;这个只是一个引用,内存中如果有“hello的话,s1就指向它,如果没有才创建如果你以后还用到a这个字符串的话并且是这样用:Strings1=hello;Strings3=hello;Strings4=hello;这3个变量都共享一个字符串hello而Strings2=newString(hello);是根据hello这个String对象再次构造一个String对象,将新构造出来的String对象的
本文标题:分析《JAVA程序设计》期末考试试题_(二)
链接地址:https://www.777doc.com/doc-2649975 .html