还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
浙江科技学院2009-2010学年第1学期考试试卷A卷考试科目Java程序设计考试方式闭完成时限120分钟拟题人审核人批准人2010年1月7日信息与电子工程学院2008年级计算机专业题序一二三四五六七八九十总分加分人复核人得分签名命题得分
一、选择题在题后括号内,填上正确答案代号(本大题共32小题,每小题1分,共32分)1、下列属于合法的Java标识符是A.+throwB._dogC.100US$D.=
2.71828183分析:标识符可从一个字母、下划线_或美元符号$开始,随后也可跟数字标识符是大小写区别对待的并且未规定最大长度有效标识符如下-identifier-userName-User_name-_sys_varl-$change
2、在Java程序中,分别使用下列关键词来依次声明类和接口A、class、packageB、interface、classC、class、interfaceD、class、implements分析:类的关键字子实class接口是interfacepackage是包的关键字implements是实现接口的关键字
3、欲使子类的方法不可重写父类的方法,在父类的方法名前须加上修饰符A、finalB、publicC、privateD、protected分析:用final声明的final类不能被继承即不能有子类用final修饰父类中的一个方法那么这个方法不允许子类重写老老实实继承不许做任何篡改用final修饰的成员变量或局部变量就是常量常量在声明时没有默认值所以在声明常量时必须指定该常量的值而且不能发生改变.
4、设数组Array由以下语句定义int[]Array=newint
[10]则数组的最后一个元素的正确引用方法为:A、Array
[0] B、Array
[10] C、Array
[9] D、Array分析:像C语言一样的如果定义为Array[n]则是从0-n-1这n个数有效
5、下面关于构造函数的说法不正确的是:A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值B、构造函数一定要和类名相同C、构造函数没有返回值 D、构造函数不可以重载分析:构造方法可以重载注:
1.重载的两个条件是:参数个数不同或参数的类型不同
2.如果不写构造方法java会自动生成一个空的构造方法但是如果写了自己的非空构造方法后java就不会自动帮助生成那个空的构造方法了.
6、构造函数何时被调用.A、创建对象时 B、类定义时C、调用对象方法时 D、使用对象的变量时分析:对象声明时并没有调用构造方法比如Studentstudent;只有对象被创建时才会调用构造方法比如Studentstudent=newStudent;
7、cotinue语句A、只中断最内层的循环B、只中断最外层的循环C、结束整个循环D、结束本次循环,转入进行下一次循环分析:在循环体中可以使用break语句和continue语句.在一个循环中比如循环50次的循环语句中如果在某次循环中执行break语句那么整个循环语句就结束如果在某次循环中执行了continue语句那么本次循环就结束了即不再执行本次循环中循环体中continue语句后面的语句.而转入进行下一次循环
8、已知如下定义Strings=xyz;下面哪个表达式是合法的 A、charc=s
[1]; B、s+=UVW;C、intlen=s.length; D、Stringt=s+‘ABC’;分析:A.ThetypeoftheexpressionmustbeanarraytypebutitresolvedtoStringC.s.lengthcannotberesolvedorisnotafield改成:intlen=s.length;就对了D.Invalidcharacterconstant
9、下面的代码段中,执行之后输出结果是什么inta=97;byteb1=byte128;byteb2=byte-129;“%c%d%d”ab1b2;A、97128-129B、a-128127C、a128-129D、a-128129分析:1%c输出的是aint类型的ASCII码所代表的字符即ASCII码中97所对应的字符是’a’2byte只有八位只能表示-128--127计算机中负数的存储方式是补码对负数的绝对值的二进制值取反,再加一,即为负数的二进制码如-1的绝对值1的二进制码为00000001,取反得到11111110,再加一为11111111-128的绝对值128的二进制码为10000000,取反得到01111111,再加一为10000000,正好是Byte的最大表示范围第一位为符号位0表示为正数1为负数.例如00000001表示为1而10000001表示为-127记录符号位为-取后面七位取反加一再加上符号位128100000000符号位为1是负数取后面0000000取反为1111111加一即为128加上负号即为-
12810、下列代码中的public void addint a方法在add
(5)形式调用下产生什么输出?public class Test {public void addint a {loop: for int i = 1; i 3; i++{for int j = 1; j 3; j++ {if a == 5 {break loop;}}}}A、运行时错误 B、抛出ArrayIndexOutOfBoundsException异常C、输出1 2 2 4 D、没有输出分析:if a == 5 {break loop;}程序执行到这里的时候不会执行下面的而是直接跳出外循环继续执行这里已经没东西执行了如果想提高程序的可读性的话,不推荐使用breakloop;,因为一个跳来跳去的程序不适宜他人阅读…………如果不考虑对可读性的影响,巧妙的使用breakloop;很可能会提高程序性能,比如你判断一个二维数组里是否包含某个数,第二种方法显然比第一种方法性能高设int[][]is={{123}{456}{789}};intcmp=5;第一种intpos=-1;forinti=0;i3;i++{forintj=0;j3;j++{ifpos0is[i][j]==cmp{pos=i*3+j;break;}}}第二种intpos=-1;loop:forinti=0;i3;i++{forintj=0;j3;j++{ifis[i][j]==cmp{pos=i*3+j;breakloop;}}}(对于这题,第一种必须外循环结束才可以出来,第二种只要得到这个数后就可以直接跳出外循环了,循环次数减少)
11、传递3 、0来运行下列代码中的方法divideintaintb,结果是:publicvoiddivideintaintb{try{ intc=a/b;}catchExceptione{}finally{}}A、打印输出:ExceptionFinallyB、打印输出:FinallyC.、打印输出:Exception D.、没有任何输出分析:3/0是不合法的会报错catchExceptione会捕捉到这个错误并且执行;finally中的语句是不论是否异常都会执行的.注:首先finally结构使代码总会执行,而不管有无异常发生其次trycatchfinally中fianlly的throw/return的级别最高,举例来说publicclassFinally{publicstaticvoidmainString[]args{Finallye=newFinally;}publicvoidthooothrowsException{thrownewException;}publicinttryThis{try{thooo;return1;}catchExceptionex{return2;}finally{return3;}}}上面这个程序输出的结果是1243看到么?try和catch的return根本没有作用,因为finally的代码优先级最高!不过像以上你的应用是不合理的,通常在finally语句中是进行资源的清除工作如关闭打开的文件和通讯句柄,或者数据库链接等如果finally里面没有return或者exception,那么你的catch语句的exception或者return语句将被如期执行了
12、下列哪个类中可以有abstract方法:A、抽象类B、匿名类C、泛型类D、异常类分析:抽象类:1abstract类中可以有abstract方法和普通的类相比abstract类可以有abstract方法抽象方法也可以由非abstract方法.2abstract类不能用new运算符创建对象.对于abstract类不能使用new预算福创建该类的对象.如果一个非抽象是某个抽象类的子类那么它必须重写父类的抽象方法m这就是为什么不允许使用final和abstract同时修饰一个方法的原因.注:
1.abstract类也可以没有abstract方法.
2.如果一个abstract类是abstract类的子类它可以重写父类的abstract方法也可以继承这个abstract方法.
3.abstract类和接口的区别请看同一压缩包下的word文件.匿名类:匿名类是不能有名称的类所以没办法引用它们.必须在创建时作为new语句的一部分来声明它们.这就要采用另一种形式的new语句如下所示:new类或接口类的主体泛型类:泛型类封装不是特定于具体数据类型的操作泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关没怎么听过异常类:捕捉并处理异常的类自己看书P
14013、下列程序的功能是在监控台上每隔2秒钟显示一个字符串“你好吗”能够填写在程序中下划线位置,使程序完整并能正确运行的语句是publicclassTestimplementsRunnable{publicstaticvoidmainStringargs[]{Testt=newTest;Threadtt=newThreadt;tt.start;}publicvoidrun{for;;{try{;}catche{}你好吗;}}}A.sleep2000RuntimeExceptionB.sleep2000InterruptedExceptionC.Thread.sleep2000InterruptedExceptionD.Thread.sleep2000RuntimeException分析:sleep是Thread的静态方法如果是实现了Runnable接口则必须用Thread.sleep调用sleep方法但是如果直接继承了Thread类就可以直接用sleep了推荐使用实现接口的方法因为java只能继承一个对象但是却可以实现多个接口.InterruptedException:当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常RuntimeException,也就是运行时异常,表示你的代码本身存在BUG
14、给出下列代码,哪一个是正确的结果.Doublex=
3.14159; doubley=
1.732;ifx!+y; }A、x=
3.14159 B、x=
1.732 C、编译错误 D、 x=+y分析:送分题
15、以下运行平台都包括了Java的JVM:A.NetBeans、VC++、J2EEB.Eclipse、MySQL、J2SEC.JDK、J2ME、TomcatD.J2SE、J2EE、J2ME分析: NetBeansIDE是一个屡获殊荣的集成开发环境可以方便的在Windows,Mac,Linux和Solaris中运行NetBeans包括开源的开发环境和应用平台,NetBeansIDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeansIDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C/C++等开发语言MySQL是一个小型的数据库Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选J2SEJ2EEJ2ME是java的3个大方向
16、在Java程序中,方法可以操作变量,以下全部正确的一项是A.实例方法可以操作实例变量和类变量,类方法只能操作类变量B.实例方法只能操作实例变量,类方法可操作实例变量和类变量C.实例方法和类方法均可操作实例变量和类变量D.实例方法只能操作实例变量,类方法只能操作类变量分析:实例方法就是前面没有static的方法可以操作实例变量普通变量和类变量静态变量类方法静态方法只能操作类变量静态变量详情请查看书本P81所以一般程序中主方法中会这么写来避开类方法这种约束:publicclassTest{publicstaticvoidmainString[]args{newTest.init;}publicvoidinit{要写的内容}}
17、在Java中,用package语句说明一个包时,该包的层次结构必须是A.与文件的结构相同B.与文件类型相同C.与文件目录的层次相同D.与文件大小相同分析:实际的文件里面目录是com/zzb/test.从而来区分类的层次注:包名只能是小写规范.
18、若准备按字节读取文件中的内容(数据),应使用下列哪个流A.FileOutputStreamB.DataInputStreamC.FileInputStreamD.DataOutputStream分析:首先是读取所以肯定是有InputStream或read这些字在其中的其次是”文件”有FileInputStream和FileReader两种节点流而FileInputStream是按字节读取的FileReader是按字符读取的
19、在Java中,一个线程执行完run方法后,进入哪种状态A.新建B.运行C.中断D.死亡分析:送分题
20、阅读下列代码后publicclassPerson{intarr[]=newint
[10];publicstaticvoidmainStringargs[]{}}正确的说法是A.编译时正确,运行时将产生错误B.编译时将产生错误C.输出零D.输出空分析:会报Cannotmakeastaticreferencetothenon-staticfieldarr错误意识就是类方法中不能调用实例变量修改的方法有两个:一把intarr[]=newint
[10];写成staticintarr[]=newint
[10];二把写到实例方法中
21、long型友好成员变量START_YEAR,该值保持为常数2010,则定义这个变量的语句是A.finallongSTART_YEAR=2010B.publiclongSTART_YEAR=2010C.constlongSTART_YEAR=2010D.publicfinallongMAX_LENGTH=100分析:友好变量不能带public带了就是公有变量要保持常数只能是final变量而且是long类型的注:常量要大写规范
22、下列关于线程优先级的说法中,正确的是A.线程的优先级是不能改变的B.线程的优先级是在创建线程时设置的C.线程的优先级是在线程中断是设置的D.在创建线程后的任何时候都可以设置分析:A线程的优先级是可以调节的Threadt1=newThreadnewT1;t
1.setPriorityThread.NORM_PRIORITY+3;B.C是在创建线程之后任何时间设置的默认为
5.//线程的优先级用数字表示范围从1到10一个线程缺省优先级是5//Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Thread.NORM_PRIORITY=5;//使用intgetPriority可以获得线程对象的优先级使用voidsetPriorityintnewPriority可以设置线程对象的优先级
23、下列程序,正确的输出为classA{A{}}publicclassTest{staticAt=newA;Test{}voidgo{;}publicstaticvoidmainString[]args{newTest.go;}}A.Test生成A生成test.goB.A生成Test生成test.goC.Test生成test.goD.Test生成test.goA生成分析:静态变量和方法是最早执行的所以最早new了t这个对象所以掉用了了A类的构造方法再主函数中够了了一个子集的对象即Test对象从而调用了Test的构造方法申请了该对象后又调用了该对象的go方法
24、由java.net包中的URL类创建的一个URL对象,通常包含下列三部分信息A.协议、地址、资源B.HTTP、FTP、FILEC.TCP、IP、FTPD.IP地址、域名、文件分析:协议:http:ftp:….地址:localhost:8080资源:test.html
25、下列不属于Swing中构件的是A.JAppletB.CopyC.JDialogD.JFrame分析:JApplt是Applet的一个加强版,其类继承了AppletJDialog是对话框.JFrame它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户
26、在Java中,与数据库连接的技术是A.ODBCB.JDBCC.数据库厂家驱动程序D.数据库厂家的连接协议分析:ODBC是微软的不是java中的
27、Java语言使用的字符码集是A.ASCIIB.BCDC.UnicodeD.BIOS分析:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求1990年开始研发,1994年正式公布随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及记住就好
28、用语句intrandomNumber=intMath.Random*100+1;可得到一个随机数A.0~1之间B.0~10之间C.0~100之间D.1~100之间分析:Math.Random*100得到的是0-99的+1便是1-
10029、接口也可被继承,即通过下列关键字声明一个接口是另一个接口的子接口A.interfaceB.implementsC.extendsD.try-catch分析:小心就好了是接口继承接口用extends而类实现接口用的是implements
30、如果希望所有的控件在界面上均匀排列,应使用下列哪种布局管理器? A.GridLayout B.FlowLouLayoutC.BorderLayout D.BoxLayout分析:这些都是布局BorderLayout是通过f.addbnNorth;设置东西南北中的//FlowLayout是Panel类的默认布局管理器.对组件逐个定位行内从左到右一行排满后换行//FlowLayout默认的对齐方式是居中//GridLayout类是一个布局处理器,//它以矩形网格形式对容器的组件进行布置//容器被分成大小相等的矩形,一个矩形中放置一个组件
31、为了允许程序按照与机器无关的风格读取Java原始数据,需要使用下列哪种流才合适?A.FilterstreamB.DatastreamC.ByteArraystreamD.Filestream分析://数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中publicclassDataOutputStream类{publicstaticvoidmainString[]args{//在内存中分配一个字节数组//注:dosdis为字节数组的引用.ByteArrayOutputStreambaos=newByteArrayOutputStream;//其中的数据被写入一个字节数//数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中DataOutputStreamdos=newDataOutputStreambaos;try{dos.writeDoubleMath.random;//写入到分配的字节数组中dos.writeBooleantrue;ByteArrayInputStreambais=newByteArrayInputStreambaos.toByteArray;//long8个字节.boolean1个字节DataInputStreamdis=newDataInputStreambais;dos.close;dis.close;}catchIOExceptione{e.printStackTrace;}}}
32、下列代码中,将引起一个编译错误的行是1)publicclassAbb{2)intkn;3)publicAbb{}4)publicAbbintaintb{k=a;n=b;}5)publicstaticvoidmainStringargs[]{6)Abbt1t2;7)intij;8)i=1;j=2;9)t1=newAbbj;10)t2=newAbb;11)}12)}A.第3行B.第5行C.第9行D.第10行分析:送分题没有只带一个参数的构造方法专业班级学号姓名………………………………………………………………………装订线……………………………………………………………………………………。