分析Java程序设计09-10试卷A(一).doc_第1页
分析Java程序设计09-10试卷A(一).doc_第2页
分析Java程序设计09-10试卷A(一).doc_第3页
分析Java程序设计09-10试卷A(一).doc_第4页
分析Java程序设计09-10试卷A(一).doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江科技学院考试试卷 专业班级 学号 姓名 装订线 浙江科技学院2009 -2010 学年第 1 学期考试试卷A卷 考试科目 Java程序设计 考试方式 闭 完成时限 120分钟 拟题人 审核人 批准人 2010年1月7日 信息与电子工程学 院 2008 年级 计算机 专业题序一二三四五六七八九十总分加分人复核人得分签名命题:得分一、选择题。在题后括号内,填上正确答案代号。(本大题共32小题,每小题1分,共32分)、下列属于合法的Java标识符是A +throw B_dogC 100US$ D=2.71828183分析: 标识符可从一个字母、下划线(_)或美元符号($)开始,随后也可跟数字。标识符是大小写区别对待的并且未规定最大长度。 有效标识符如下:-identifier-userName-User_name-_sys_varl-$change2、 在Java程序中,分别使用下列关键词来依次声明类和接口:A、class、package B、interface、class C、class、interface D、class、implements分析: 类的关键字子实class, 接口是interface, package是包的关键字, implements是实现接口的关键字3、欲使子类的方法不可重写父类的方法,在父类的方法名前须加上修饰符:A、 finalB、 publicC、 privateD、protected分析: 用final声明的final类, 不能被继承, 即不能有子类用final 修饰父类中的一个方法, 那么这个方法不允许子类重写,(老老实实继承, 不许做任何篡改)用final 修饰的成员变量或局部变量, 就是常量, 常量在声明时没有默认值, 所以在声明常量时必须指定该常量的值, 而且不能发生改变.4、设数组Array由以下语句定义 int Array=new int10 则数组的最后一个元素的正确引用方法为:A、Array0 B、Array10 C、Array9 D、Array分析: 像C语言一样的, 如果定义为 Arrayn, 则是从0 - n-1 这n个数有效5、下面关于构造函数的说法不正确的是:A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值。B、构造函数一定要和类名相同。C、构造函数没有返回值。D、构造函数不可以重载。分析: 构造方法可以重载注: 1. 重载的两个条件是: 参数个数不同或参数的类型不同2. 如果不写构造方法, java会自动生成一个空的构造方法, 但是如果写了自己的非空构造方法后, java就不会自动帮助生成那个空的构造方法了.6、构造函数何时被调用.A、创建对象时B、类定义时C、调用对象方法时D、使用对象的变量时分析: 对象声明时并没有调用构造方法(比如Student student;), 只有对象被创建时才会调用构造方法(比如 Student student = new Student();)7、cotinue语句( )A、只中断最内层的循环B、只中断最外层的循环 C、结束整个循环D、结束本次循环,转入进行下一次循环分析: 在循环体中可以使用break语句和continue语句. 在一个循环中, 比如循环50次的循环语句中, 如果在某次循环中执行break语句, 那么整个循环语句就结束, 如果在某次循环中执行了continue语句, 那么本次循环就结束了, 即不再执行本次循环中循环体中continue语句后面的语句. 而转入进行下一次循环8、已知如下定义:String s = xyz;下面哪个表达式是合法的? A、char c = s1; B、s += UVW; C、int len = s.length; D、String t = s + ABC;分析: A. The type of the expression must be an array type but it resolved to StringC. s.length cannot be resolved or is not a field改成: int len = s.length();就对了D. Invalid character constant9、下面的代码段中,执行之后输出结果是什么?int a=97;byte b1=(byte)128; byte b2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2); A、97,128,-129 B、a,-128,127C、a,128,-129 D、a,-128,129分析: 1) %c输出的是a(int类型)的ASCII码所代表的字符, 即ASCII码中97所对应的字符是a, 2) byte只有八位,只能表示-128-127计算机中负数的存储方式是补码。对负数的绝对值的二进制值取反,再加一,即为负数的二进制码。如:-1的绝对值1的二进制码为00000001,取反得到11111110,再加一为11111111。-128的绝对值128的二进制码为10000000,取反得到01111111,再加一为10000000,正好是Byte的最大表示范围。第一位为符号位,0表示为正数,1为负数.例如00000001表示为1,而10000001表示为-127(记录符号位为-,取后面七位取反加一,再加上符号位),128(100000000)符号位为1,是负数,取后面0000000取反为1111111,加一即为128,加上负号,即为-12810、下列代码中的publicvoidadd(inta)方法在add(5)形式调用下产生什么输出? publicclassTest publicvoidadd(inta) loop:for(inti=1;i3;i+) for(intj=1;j3;j+) if(a=5) breakloop; System.out.println(i*j); A、运行时错误 B、抛出ArrayIndexOutOfBoundsException异常 C、输出:1,2,2,4 D、没有输出分析: if(a=5)breakloop; 程序执行到这里的时候, 不会执行下面的System.out.println(i*j); 而是直接跳出外循环继续执行(这里已经没东西执行了)如果想提高程序的可读性的话,不推荐使用break loop;,因为一个跳来跳去的程序不适宜他人阅读如果不考虑对可读性的影响,巧妙的使用break loop;很可能会提高程序性能,比如你判断一个二维数组里是否包含某个数,第二种方法显然比第一种方法性能高:设int is= 1,2,3,4,5,6,7,8,9;int cmp=5;第一种:int pos=-1;for (int i=0; i3; i+) for (int j=0; j3; j+) if (pos0 & isij=cmp) pos=i*3+j; break; System.out.println(pos);第二种:int pos=-1;loop:for (int i=0; i3; i+) for (int j=0; j3; j+) if (isij=cmp) pos=i*3+j; break loop; System.out.println(pos);(对于这题,第一种必须外循环结束才可以出来,第二种只要得到这个数后就可以直接跳出外循环了,循环次数减少)11、传递3、0来运行下列代码中的方法divide(int a, int b),结果是:public void divide(int a, int b) try int c = a / b; catch (Exception e) System.out.print(Exception ); finally System.out.println(Finally); A、打印输出: Exception Finally B、打印输出: Finally C.、打印输出: Exception D.、没有任何输出分析: 3/0是不合法的, 会报错, catch (Exception e)会捕捉到这个错误, 并且执行System.out.print(Exception ); finally中的语句是不论是否异常都会执行的.注: 首先finally 结构使代码总会执行,而不管有无异常发生其次try, catch, finally中fianlly的throw/return的级别最高,举例来说public class Finally public static void main(String args) Finally e=new Finally(); System.out.println(e.tryThis(); public void thooo() throws Exception throw new Exception(); public int tryThis() try System.out.println(1); thooo(); return 1; catch(Exception ex) System.out.println(2); return 2; finally System.out.println(4); return 3; 上面这个程序输出的结果是1 2 4 3看到么?try和catch的return根本没有作用,因为finally的代码优先级最高!不过像以上你的应用是不合理的,通常在finally语句中是进行资源的清除工作。如关闭打开的文件和通讯句柄,或者数据库链接等。如果finally里面没有return或者exception,那么你的catch语句的exception 或者 return 语句将被如期执行了。12、下列哪个类中可以有abstract方法:A、抽象类 B、 匿名类C、泛型类 D、异常类分析: 抽象类: 1) abstract类中可以有abstract方法, 和普通的类相比, abstract类可以有abstract方法(抽象方法), 也可以由非abstract方法.2) abstract类不能用new运算符创建对象. 对于abstract类, 不能使用new预算福创建该类的对象. 如果一个非抽象是某个抽象类的子类, 那么它必须重写父类的抽象方法m 这就是为什么不允许使用final和abstract同时修饰一个方法的原因. 注: 1). abstract类也可以没有abstract方法.2). 如果一个abstract类是abstract类的子类, 它可以重写父类的abstract方法, 也可以继承这个abstract方法.3). abstract类和接口的区别请看同一压缩包下的word文件.匿名类: 匿名类是不能有名称的类, 所以没办法引用它们. 必须在创建时, 作为new 语句的一部分来声明它们. 这就要采用另一种形式的new语句, 如下所示:new 泛型类: 泛型类封装不是特定于具体数据类型的操作。泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等。像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。(没怎么听过)异常类: 捕捉并处理异常的类, 自己看书P14013、下列程序的功能是在监控台上每隔2秒钟显示一个字符串“你好吗?”,能够填写在程序中下划线位置,使程序完整并能正确运行的语句是: public class Test implements Runnable public static void main(String args) Test t = new Test(); Thread tt = new Thread(t); tt.start(); public void run() for (;) try ; catch ( e) System.put.println(你好吗?); Asleep(2000) RuntimeException Bsleep(2000) InterruptedException CThread.sleep(2000) InterruptedExceptionDThread.sleep(2000) RuntimeException分析: sleep是Thread的静态方法, 如果是实现了Runnable接口则必须用Thread.sleep()调用sleep方法, 但是如果直接继承了Thread类就可以直接用sleep了(推荐使用实现接口的方法, 因为java只能继承一个对象, 但是却可以实现多个接口).InterruptedException : 当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。RuntimeException,也就是运行时异常,表示你的代码本身存在BUG14、给出下列代码,哪一个是正确的结果. Double x = 3.14159; double y = 1.732; if (x != y) System.out.println(“x = “ + y); A、 x = 3.14159 B、x = 1.732 C、 编译错误 、x=+y分析: 送分题15、以下运行平台都包括了Java的JVM: ANetBeans、VC+、J2EE BEclipse、MySQL、J2SE CJDK、J2ME、Tomcat D J2SE 、J2EE、J2ME分析: NetBeans IDE是一个屡获殊荣的集成开发环境,可以方便的在Windows,Mac,Linux和Solaris中运行。NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeans IDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C /C + +等开发语言。MySQL是一个小型的数据库, Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。J2SE J2EE J2ME是java的3个大方向16、在Java程序中,方法可以操作变量,以下全部正确的一项是:A.实例方法可以操作实例变量和类变量,类方法只能操作类变量B.实例方法只能操作实例变量,类方法可操作实例变量和类变量C.实例方法和类方法均可操作实例变量和类变量D.实例方法只能操作实例变量,类方法只能操作类变量分析: 实例方法就是前面没有static 的方法, 可以操作实例变量(普通变量)和类变量(静态变量), 类方法(静态方法)只能操作类变量(静态变量), 详情请查看书本P81, 所以一般程序中主方法中会这么写来避开类方法这种约束:public class Test public static void main(String args) new Test().init();public void init() 要写的内容17、在Java中,用package语句说明一个包时,该包的层次结构必须是 A与文件的结构相同 B 与文件类型相同C与文件目录的层次相同D与文件大小相同 分析: 如果创建得包名为com.zzb.test则再实际的文件里面目录是com/zzb/test.从而来区分类的层次, 注: 包名只能是小写(规范).18、若准备按字节读取文件中的内容(数据),应使用下列哪个流:AFileOutputStreamBDataInputStreamCFileInputStreamDDataOutputStream分析: 首先是读取, 所以肯定是有InputStream 或read这些字在其中的, 其次是”文件”, 有FileInputStream和 FileReader两种节点流, 而FileInputStream是按字节读取的, FileReader是按字符读取的,19、在Java中,一个线程执行完run()方法后,进入哪种状态:A新建B运行C中断D死亡分析: 送分题20、阅读下列代码后 public class Person int arr=new int10; public static void main(String args) System.out.println(arr1); 正确的说法是 A编译时正确,运行时将产生错误 B编译时将产生错误C 输出零 D输出空 分析: 会报Cannot make a static reference to the non-static field arr错误, 意识就是类方法中不能调用实例变量, 修改的方法有两个: 一 把int arr=new int10; 写成static int arr = new int10;二 把System.out.println(arr1); 写到实例方法中21、long型友好成员变量START_YEAR,该值保持为常数2010,则定义这个变量的语句是 Afinal long START_YEAR=2010 Bpublic long START_YEAR=2010Cconst long START_YEAR=2010 Dpublic final long MAX_LENGTH=100 分析: 友好变量不能带public, 带了就是公有变量, 要保持常数只能是final变量, 而且是long类型的, 注: 常量要大写(规范)22、下列关于线程优先级的说法中,正确的是 A线程的优先级是不能改变的 B线程的优先级是在创建线程时设置的 C线程的优先级是在线程中断是设置的D在创建线程后的任何时候都可以设置分析: A线程的优先级是可以调节的Thread t1 = new Thread(new T1(); t1.setPriority(Thread.NORM_PRIORITY + 3);B.C 是在创建线程之后任何时间设置的, 默认为5./线程的优先级用数字表示,范围从1到10,一个线程缺省优先级是5/Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_PRIORITY = 5;/使用int getPriority()可以获得线程对象的优先级,使用void setPriority(int newPriority)可以设置线程对象的优先级23、 下列程序,正确的输出为:class A A() System.out.println(A生成 ); public class Test static A t = new A(); Test()System.out.print (Test生成 ); void go() System.out.print (test.go() ); public static void main(String args) new Test().go(); ATest生成 A生成 test.go() BA生成 Test生成 test.go() CTest生成 test.go() DTest生成 test.go() A生成 分析: 静态变量和方法是最早执行的, 所以最早new了t这个对象, 所以掉用了了A类的构造方法, 再主函数中够了了一个子集的对象(即Test对象), 从而调用了Test的构造方法,申请了该对象后, 又调用了该对象的go()方法24、由包中的URL类创建的一个URL对象,通常包含下列三部分信息:A协议、地址、资源 BHTTP、FTP、FILE CTCP、IP、FTP DIP地址、域名、文件 分析: 协议: http: ftp: .地址: localhost:8080资源: test.html25、下列不属于Swing中构件的是AJApplet BCopy CJDialogDJFrame 分析: JApplt是Applet的一个加强版,其类继承了Applet。JDialog是对话框. JFrame它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。26、在Java中,与数据库连接的技术是AODBC BJDBC C数据库厂家驱动程序 D数据库厂家的连接协议 分析: ODBC是微软的, 不是java中的27、Java语言使用的字符码集是AASCII BBCD CUnicode D BIOS分析: Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。记住就好28、用语句int randomNumber=(int)(Math.Random()*100+1);可得到一个随机数:A01之间B010之间C0100之间D1100之间分析: Math.Random()*100得到的是0-99的, +1便是1-10029、接口也可被继承,即通过下列关键字声明一个接口是另一个接口的子接口:AinterfaceBimplementsCextendsDtry-catch分析:小心就好了, 是接口继承接口, 用extends, 而类实现接口用的是implements30、如果希望所有的控件在界面上均匀排列,应使用下列哪种布局管理器?A GridLayout B FlowLouLayoutCBorderLayout DBoxLayout分析: 这些都是布局, BorderLayout 是通过f.add(bn, North);设置东西南北中的, /FlowLayout是Panel类的默认布局管理器.对组件逐个定位,行内从左到右,一行排满后换行/FlowLayout默认的对齐方式是居中/GridLayout 类是一个布局处理器,/它以矩形网格形式对容器的组件进行布置。/容器被分成大小相等的矩形,一个矩形中放置一个组件31、为了允许程序按照与机器无关的风格读取Java原始数据,需要使用下列哪种流才合适?AFilter streamBData streamCByteArray stre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论