还剩31页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
自考Java语言程序设计
(一)课后习题及答案自考Java语言程序设计
(一)第一章Java语言概述课后习题
一、Java语言概述 1.Java语言有哪些特点? 2.什么叫做类?什么叫做对象? 3.简述Java的运行机制 4.简述Java应用程序的开发流程 (a)要发展航空仿真软件 (b)要发展人工智能软件 (c)要发展消费性电子产品
6.Java是从哪种语言改进并重新设计? (b)C++ (c)Pascal
7.Java因为什么快速发展而走红? (a)个人计算机与网络 (b)游戏软件 (c)系统软件
8.Java程序的种类有 (a)内嵌于Web文件中,由浏览器来观看的__________ (b)可独立运行的__________考试大论坛 (c)服务器端的_________
9.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念
10.判断用Javac编译Java源文件后得到代码叫字节码 参考答案 1.答面向对象、简单、平台无关性、安全性、内存管理、分布式应用、多线程、动态、解释运行,高效能 2.答在面向对象编程中,具体的客观实体称为对象,对象就是数据加方法对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板来源考试大 3.答Java程序的运行必须经过编写、编译、运行三个步骤编写是指在Java开发环境中进行程序代码的输入过程,最终形成后缀名为.java源文件编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件运行是指使用Java解释器将字节码文件翻译成机器代码,在cpu上运行并显示结果的过程这一过程如图所示考试大-全国最大教育类网站www.Examdacom 4.Java应用程序的运行经过编写、编译、运行三个步骤 第1步,编写程序使用记事本或其他软件编写程序的源代码,将源代码保存为文件filename.java文件 第2步,编译程序在MS-DOS命令窗口,将当前目录转换到Java源程序所在的保存目录;输入“javame.java”形式的命令进行程序编译 第3步,执行程序在同样的命令窗口中输入“javame”形式的命令执行程序来源考试大
5.c
6.b
7.a
8.AppletApplicationServlets
9.软件模型
10.true自考Java语言程序设计
(一)第二章数据类型和流程控制课后习题
二、数据类型和流程控制
1.现有语句Strings=Example;则下面哪些语句是合法语句? A.s=3;B.s
[3]=x; C.inti=s.length;D.Stringt=For+s; E.s=s+10; 2.下面哪些是保留字? A.runB.defaultC.implementD.import 3.下面声明float变量的语句合法的有 A.floatfoo=-1;B.floatfoo=
1.0; C.floatfoo=42e1;D.floatfoo=
2.02f; E.floatfoo=
3.03d;F.floatfoo=0x0123;
4.下面方法中的“返回类型无效”应该是什么? publicclassReturnIt{来源考试大 return无效methodAbytexdoubley{ returnshortx/y*2; } } 5.以下哪两个表达式是等价的 A.3/2B.32C.3*4 D.32E.3*2^2F.32
6.指出正确的表达式 A、byte=128;来源考试大 B、Boolean=null; C、longl=0xfffL; D、double=
0.9239d; 7.分析下列程序的执行结果
(1)publicclassTest{ publicstaticvoidmainStringargs[]{ inti=oxFFFFFFF1; intj=~i; } }
(2)publicclassTest{ publicstaticvoidmainString[]args{ } }
(3)publicclassFooBar{ publicstaticvoidmainString[]args{ inti=0j=5; tp: for;;i++{ for;;--j ifij breaktp; } } }
(4)publicclassTest{ publicstaticvoidmain{ inti=1j=10; do{ ifi++--j continue; }whilei5; } }
(5)classValue{ publicinti=15; } publicclassTest{ publicstaticvoidmainStringargv[]{ Testt=newTest; t.first; } publicvoidfirst{ inti=5; Valuev=newValue; v.i=25; secondvi; } publicvoidsecondValuevinti{ i=0; v.i=20; Valueval=newValue;来源考试大的美女编辑们 v=val; } }
8.选出合理的标识符 A、_sys1_lll B、2mail C、$change D、class
9.判断一个方法最多能有一个return语句
10.Java语言中一个Char类型的数据占用2个字节大小的内存空间 参考答案 1.cde 2.bd 3.adf 4.double 5.cd
6.d 7.
(1)c
(2)5
(3)i=0j=-1
(4)i=5j=6
(5)15020
8.ac
9.true
10.ture自考Java语言程序设计
(一)第三章类与对象课后习题
三、类与对象 1.什么叫引用类型,对象是引用类型吗? 2.什么是类成员,什么是实例成员?他们之间有什么区别?
3.判断数组、类和接口都是引用数据类型()
4.判断类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员
5.下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的() A、publicB、privateC、staticD、final采集者退散
6.下面关于java中类的说法哪个是不正确的() A、类体中只能有变量定义和成员方法的定义,不能有其他语句 B、构造函数是类中的特殊方法 C、类一定要声明为public的,才可以执行采集者退散 D、一个java文件中可以有多个class定义
7.下列哪个类声明是正确的 AabstractfinalclassH1{…} Babstractprivatemove{…} Cprotectedprivatenumber; DpublicabstractclassCar{…}
8.下述哪些说法是正确的?(多选) A、实例变量是类的成员变量 B、实例变量是用static关键字声明的 C、方法变量在方法执行时创建 D、方法变量在使用之前必须初始化 9.设计一个动物类,它包含动物的基本属性例如名称、大小、重量等,并设计相应的动作,例如跑、跳、走等 10.设计一个长方形类,成员变量包括长和宽类中有计算面积和周长的方法,并有相应的set方法和get方法设置和获得长和宽编写测试类测试是否达到预定功能要求使用自定义的包 参考答案 1.答引用类型是指该类型的标识符表示的是一片内存连续地址的首地址对象是引用类型来源考试大 2.答Java中使用static修饰的变量和方法称为类变量(或称静态变量)和类方法(或称静态方法),没用static修饰符的变量和方法称为实例变量和实例方法 类成员是指该成员属于这个类,由这个类所创建的所有对象共同拥有,该成员仅在类的存储单元中存在,这个类所创建的所有对象中仅存储一个指向该成员的引用任何一个该类的对象改变了类成员,其他对象同样会发生改变对于类成员既可以使用对象访问,也可以使用类名直接进行访问,并且在类方法中只能访问类变量,而不能访问实例变量 实例成员是指该成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员,不同对象的实例成员不同,任何一个对象改变了实例成员,只会影响这个对象本身,其他对象中的实例成员不会发生改变对于实例成员只能通过对象来访问,不能通过类名进行访问,在实例方法中既可以访问实例变量,也可以访问类变量考试大收集整理
3.true
4.true
5.C 6.C
7.D
8.ACD
9.答 publicclassAnimal{ privateStringname; privatedoubleweight; privateintlength; privateStringsex; publicvoidrun{ } publicvoidjump{ } publicvoidwalk{ } } 10.答 packagemypackage.math; classRectangle{ privateintlength; privateintwidth; publicRectangleintlengthintwidth{ this.length=length; this.width=width; } publicvoidsetintlengthintwidth{ this.length=length; this.width=width; } publicvoidget{ } publicintgetLength{ returnlength; } publicintgetWidth{ returnwidth; } publicintcalculatePerimeter{ return2*length+width; } publicintcalculateArea{ returnlength*width; } publicvoidprint{ } } classTest{ publicstaticvoidmainString[]args{ Rectanglemyrectangle=newRectangle1510; myrectangle.get; myrectangle.print; myrectangle.set2015; myrectangle.print; } }自考Java语言程序设计
(一)第四章方法与构造函数课后习题
四、方法与构造函数 1.Java的访问限定修饰符有几种,各自的访问权限是什么? 2.如何创建自己的包,如何引入包? 3.下面哪一个是类Myclass的构造函数? publicvoidMyclass{} publicstaticMyclass{} publicMyclass{} publicstaticvoidMyclass{} }
4.判断类体中private修饰的变量在本类中能访问,类生成的对象也能访问
5.判断一个类中,只能拥有一个构造器方法
6.Java中类成员的限定词有以下几种privatepublic________________其中,________的限定的范围最大
7、被关键字__________修饰的方法是不能被当前类的子类重新定义的方法 8.设计Point类用来定义平面上的一个点,用构造函数传递坐标位置编写测试类,在该类中实现Point类的对象 9.编写程序说明静态成员和实例成员的区别 10.设计雇员Employee类,记录雇员的情况,包括姓名、年薪、受雇时间,要求定义MyDate类作为受雇时间,其中包括工作的年、月、日,并用相应的方法对Employee类进行设置编写测试类测试Employee类要求使用自己的包 参考答案 1.答Java的访问限定修饰符有4种,分别使public、protected、private和默认修饰符用public修饰的类或成员拥有公共作用域,表明此类或类的成员可以被任何Java中的类所访问,是最广泛的作用范围用protected修饰的变量或方法拥有受保护作用域,可以被同一个包中所有的类及其他包中该类的子类所访问用private修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子类也是不允许访问的,private是最保守的作用范围没有任何修饰符拥有默认访问权限(友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问本文来源:考试大网 2.答创建自己的包只要将package语句作为Java源文件的第一句就可以了例 packagemyPackage;声明创建了一个名为myPackage的包 Java使用import语句来引入包及其中的类例如importmyPackage.*;就引入了myPackage包中所有的类 3.答publicMyclass{}是类Myclass的构造函数
4.false
5.false
6.friendly、protected、public 7.Private
8.答 classPoint {intxy; Pointintaintb {x=a; y=b; } } publicclassA {publicstaticvoidmainString[]args {Pointp1p2; p1=newPoint1010; p2=newPoint2335; } } 9.答 classStaticTest{ inti=5; staticintj=5; voidprint{ } staticvoidclassprint{ } } classTest{ publicstaticvoidmainString[]args{ //StaticTest.print; StaticTest.classprint; StaticTestst=newStaticTest; st.print; st.classprint; } } 10.答 packagemypackage.employee; classMyDate{ privateintyear; privateintmonth; privateintday; publicMyDateintyearintmonthintday{ this.year=year; this.month=month; this.day=day; } publicintgetYear{ returnyear; } } publicclassEmployee{ privateStringname; privatedoublesalary; privateMyDatehireDay; publicEmployeeStringnamedoublesalaryMyDateday{ this.name=name; this.salary=salary; hireDay=day; } publicvoidprint{ } publicinthireYear{ returnhireDay.getYear; } } classTestEmployee{ publicstaticvoidmainString[]args{ Employeea=newEmployee李明20000newMyDate2000101; Employeeb=newEmployee王强24000newMyDate1995812; a.print; b.print; } }自考Java语言程序设计
(一)第五章类的继承课后习题
五、类的继承 l.什么是继承什么是父类什么是子类继承的特性可给面向对象编程带来什么好处什么是单重继承什么是多重继承 2.观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法 classSuperClass { intdata; voidsetDataintnewData { data=newData~ } intgetData { returndata~ } } classSubClassextendsSuperClass { intsuhData; voidsetSubDataintnewData { suhData=newData; } intgetData { returnsubData; } } 3.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确为什么
4.在Java程序中,通过类的定义只能实现单重继承
5.下列哪些说法是正确的? A、Java语言只允许单一继承 B、Java语言只允许实现一个接口 C、Java语言不允许同时继承一个类并实现一个接口 D、Java语言的单一继承使得代码更加可靠
6.Java中所有类都是类________的子类
7. 请写出下面程序的运行结果 publicclassTestextendsTT{ publicvoidmainStringargs[]{ Testt=newTestTom; } publicTestStrings{ supers; } publicTest{ thisIamTom; } classTT{ publicTT{ } publicTTStrings{ this; } } 结果________
8.父类的成员在子类中的访问权限由决定
9.对象的使用包括引用对象的成员变量和方法通过运算符就能实现对对象成员变量的访问和对象
10.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念 参考答案 l.答继承是面向对象程序设计中两个类之间的一种关系当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类 面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个父类,则这种继承关系称为多重继承 2.答 父类SuperClass 父类的域data来源考试大的美女编辑们 父类的方法setData,getData 子类SubClass 子类的域data,subData 子类的方法setSubData,setData,getData采集者退散 3.答这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所有非私有的域和方法如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目|考试大收集整理
4.true
5.AD
6.Object
7.答 Whatapleasure! IamTom Howdoyoudo
8.访问权限修饰符
9.“.”
10.软件模型自考Java语言程序设计
(一)第六章重载与多态课后习题
六、重载与多态
1.判断接口中的所有方法都没有被实现
2.方法重载是指 A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同考试大论坛 B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同 C.两个以上的方法名字不同,但形参的个数或类型相同 D.两个以上的方法取相同的方法名,并且方法的返回类型相同 3.什么是方法的覆盖方法的覆盖与域的隐藏有何不同与方法的重载有何不同 4.解释this和super的意义和作用 5.什么是多态面向对象程序设计为什么要引人多态的特性使用多态有什么优点 6.Java程序如何实现多态有哪些方式 7.根据下面的要求编程实现复数类ComplexNumber 1复数类ComplexNumber的属性 ·m_dRealPart实部,代表复数的实数部分 ·m_dlmaginPart虚部,代表复数的虚数部分 2复数类ComplexNumber的方法 ·ComplexNumber构造方法,将实部、虚部都置为0 ·ComplexNumberdoubler,doublei构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值 ·getRealPart获得复数对象的实部 ·getlmaginaryPart获得复数对象的虚部 ·setRealPartdoubled把当前复数对象的实部设置为给定的形参的数字 ·setlmaginaryPartdoubled把当前复数对象的虚部设置为给定形参的数字 ·complexAddComplexNumberc当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者 ·complexAdddoublec当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者 ·complexMinusComplexNumberc当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者 8.什么是接口为什么要定义接口接口与类有何异同来源考试大的美女编辑们 9.一个类如何实现接口实现某接口的类是否一定要重载该接口中的所有抽象方法 10.接口是否可以被继承阅读下面的代码,试写出SubInterface中的抽象方法 interfaceSupInterface { publicabstractintsupMethod; } interfaceSubInterfaceextendsSupInterface { publicabstractstringsubMethod; } 参考答案
1.true
2.A 3.答子类重新定义父类中已经存在的方法,称为方法的覆盖注意方法覆盖与域的隐藏不同子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席之地与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法 4.答关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象考试大-全国最大教育类网站www.Examdacom 5.答一个类中存在多个同名的方法,称为多态把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖 6.答Java程序通过覆盖和重载两种方式来实现多态覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法 7.答 publicclassch5_e5_12 { publicstaticvoidmainStringargs[] { ComplexNumbercNumber_1= newComplexNumber3-5; ComplexNumbercNumber_2=本文来源:考试大网 newComplexNumber22; doubled=
10.0; +cNumber_
2.toString+等于 +cNumber_
1.complexAddcNumber_
2.toString; +d+等于 +cNumber_
1.complexAddd.toString; +cNumber_
2.toString+等于 +cNumber_
1.complexMinuscNumber_
2.toString; +d+等于 +cNumber_
1.complexMinusd.toString; +cNumber_
2.toString+等于 +cNumber_
1.complexMulticNumber_
2.toString; +d+等于 +cNumber_
1.complexMultid.toString; } } classComplexNumber { //域 privatedoublem_dRealPart; privatedoublem_dImaginPart; //构造方法 ComplexNumber { m_dRealPart=
0.0; m_dImaginPart=
0.0; } ComplexNumberdoublerdoublei { m_dRealPart=r; m_dImaginPart=i; } ComplexNumberComplexNumberc { m_dRealPart=c.getRealPart; m_dImaginPart=c.getImaginaryPart; } //getset方法 doublegetRealPart { returnm_dRealPart; } doublegetImaginaryPart { returnm_dImaginPart; } voidsetRealPartdoubled { m_dRealPart=d; } voidsetImaginaryPartdoubled { m_dImaginPart=d; } //复数运算方法 ComplexNumbercomplexAddComplexNumberc { returnnewComplexNumber this.m_dRealPart+c.getRealPart this.m_dImaginPart+c.getImaginaryPart; } ComplexNumbercomplexAdddoublec { returnnewComplexNumber this.m_dRealPart+cthis.m_dImaginPart; } ComplexNumbercomplexMinusComplexNumberc { returnnewComplexNumber this.m_dRealPart-c.getRealPart this.m_dImaginPart-c.getImaginaryPart; } ComplexNumbercomplexMinusdoublec returnnewComplexNumber this.m_dRealPart-cthis.m_dImaginPart; } ComplexNumbercomplexMultiComplexNumberc { returnnewComplexNumber this.m_dRealPart*c.getRealPart -this.m_dImaginPart*c.getImaginaryPart this.m_dRealPart*c.getImaginaryPart +this.m_dImaginPart*c.getRealPart; } ComplexNumbercomplexMultidoublec { returnnewComplexNumber this.m_dRealPart*cthis.m_dImaginPart*c; } //toString publicStringtoString { return+m_dRealPart++ +m_dImaginPart+i+; } } 8.答接口是用来实现类间多重继承功能的结构接口与类相似,但是接口中只能包括常量和抽象方法定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承 9.答使用关键字implements可以定义类实现某接口实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法 10.答接口可以被继承 SubInterface中的抽象方法有publicabstractintsupMethod;和publicabstractstringsubMethod;两个自考Java语言程序设计
(一)第七章Java常用类库介绍课后习题
七、Java常用类库介绍 1.指出下列陈述是对还是错,并做出解释
(1)当String对象用==比较时,如果String包括相同的值则结果为true
(2)一个String类的对象在其创建后可被修改 2.对于下列描述,各写出一条语句完成要求的任务
(1)比较s1中的串和s2中的串的内容的相等性;
(2)用+=向串s1附加串;
(3)判断s1中串的长度;来源考试大 3.说明capacity与length用法上的差异? 4.如果ch为StringBuffer对象,ch=“JavaApple”下列结果为何?
(1)ch.insert3’p’
(2)ch.append“Basic”
(3)ch.setlength5
(4)ch.reverse 5.Math类中提供用来常数π和e的静态属性分别是什么? 6.下面关于Vector类的说法正确的是()
(1)类Vector在java.util包中
(2)一个向量(Vector)对象存放的是一组有序的对象
(3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加
(4)一个向量(Vector)对象中每个元素可以是不同类型的对象 7.有三个字符串,编写程序找出其中最大者 8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出 9.设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成 10.设定一个有大小写字母的字符串和一个查找字符,使用类String方法IndexOf来判断在该字符串中该字符出现的次数 参考答案 1.答
(1)错用==操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同
(2)错String类的对象是常量它们被创建后不可被修改 2.答
(1)s
1.equalss1s2;
(2)s1+=s2;
(3)s
1.length; 3.答capacity()返回字符串对象的当前缓冲区的长度,length返回字符串对象字符的长度考试大收集整理 4.答
(1)结果JavpaApplet
(2)结果JavpaAppletBasic
(3)结果ch长度变为5
(4)结果apvaJ 5.答PI、E 6.答
(3) 7. publicclassmax1 { publicstaticvoidmainStringargs[] { Strings1=HelloJava; Strings2=JavaApplet; Strings3=Java; Strings; ifs
1.compareTos20 s=s2; elses=s1; ifs.compareTos30 s=s3; } } 8. publicclassout { publicstaticvoidmainStringargs[] { Strings1=HelloJava; StringBufferbufup=newStringBuffer; StringBufferbuflow=newStringBuffer; forintI=0;I {ifs
1.charAti97 {bufup.appends
1.charAti; bufup.append; } else{ buflow.appends
1.charAti; buflow.append; } } } } 9. publicclassprin_b {publicstaticvoidmainStringargs[] { Strings1=hello; Strings2=bee; Strings3=java; Strings4=brove; Strings5=bag; ifs
1.indexOfb==0 ifs
2.indexOfb==0 ifs
3.indexOfb==0 ifs
4.indexOfb==0 ifs
5.indexOfb==0 } } 10. publicclassppp { publicstaticvoidmainStringargs[] { Strings1=abcdefghi; intnum=0; forinti=0;i {i=s
1.indexofei; num++; } ifnum==0 } }自考Java语言程序设计
(一)第八章Java异常处理及输入输出流简介课后习题
八、Java异常处理及输入输出流简介 1.列出5个常见的异常 2.写出Java语言的异常处理机制的优点 3.为什么异常处理技术不应该用于常规的程序控制? 4.引起异常产生的条件是什么? 5.异常没有被捕获将会发生什么? 6.编写一个程序,以说明catch(Exceptione)如何捕获各种异常 7.下面的代码段中finally语句块会被执行吗? publicclassExceptionExam3 { publicstaticvoidmainString[]args { try { int[]a=newint
[3]; System.exit0; } catchArrayIndexOutOfBoundsExceptione finally } } 8.throws的作用是什么? 9.应在程序的什么地方使用异常处理? 10.下面的代码有什么错误吗? classExceptionExam{…} thrownewExceptionExam; 11.异常类型匹配的处理方式程序功能首先输出“这是一个异常处理的例子”,然后在你程序中主动地产生一个ArithmeticException类型被0除而产生的异常,并用catch语句捕获这个异常最后通过ArithmeticException类的对象e的方法getMessage给出异常的具体类型并显示出来 12.根据所给创建自定义异常类的使用格式,编写一个自定义异常的小程序 13.什么叫流?流式输入输出有什么特点? 14.Java流被分为字节流、字符流两大流类,两者有什么区别? 15.File类有哪些构造函数和常用方法? 16.利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入 17.编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读 18.位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制? 19.编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数 20.编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中采集者退散 21.编写一个程序,从键盘输入10个整数,并将这些数据排序后在标准输出上输出 参考答案 1.答内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处来源考试大的美女编辑们 2.答
(1)Java通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特性的复杂提供了强有力的控制方式
(2)Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性
(3)Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息,并且简化了代码的编写
(4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活 3.答a.异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理b.常规控制结构的控制流程通常比异常的更为清晰、交流更高c.在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题d.“额外的”异常会妨碍真正错误类型的异常这种使程序员更难以跟踪大量的异常 4.答异常产生的方式有3种第一种是在某些内部错误时,Java虚拟机可以产生异常,该异常不在你的程序控制范围内,通常不作处理第二种是由程序代码中的错误引起,这种异常需要你的程序处理第三种是通过使用throw语句手动生成的异常 5.答未捕获的异常最终会导致程序非正常终止 6.publicclassExceptionExam { publicstaticvoidmainString[]args { try { inti=0; i=3/i;//将产生算术异常 } catchArithmeticExceptione//找到了匹配的异常,执行该catch块 { } catchAarryIndexOutOfBoundsExceptione//不是匹配的异常,且不会再捕获 //异常,如果发生数组索引超出范围所产生的异常,将执行该catch块 { } catchExceptione //前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块 { } finally } } 7.答无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块即无论try是否正常结束,都会执行finally定义的最后的代码如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块但本题中在try代码块中执行了“System.exit0;”语句,执行了这一语句后,Java虚拟机(JVM)将被终止那么finally语句块一定不会被执行 8.答在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在throws子句中声明该异常 9.答通常,可以采用两种方式来报告错误返回值和异常在Java中异常处理很常用,虽然返回错误代码在某些情况下是一种有效的方式,但是异常处理可以提供强大的结构化方法来处理异常所以需要处理代码中的错误时就可以采用异常的方法进行处理 10.答ExceptionExam不是继承(扩展)Throwable的子类,只有Throwable的子类可以由throw抛出所以,这一段代码会出错 11. publicclassExceptionExam1 { publicstaticvoidmainString[]args { try {inti=0; i=3/i; } catchArithmeticExceptione { } finally { } } } 注意如果在catch语句中声明的异常类是Exception,catch语句也能正确地捕获,这是因为Exception是ArithmeticException的父类如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception 12. classExcp1extendsException {} classExcp2extendsExcp1 {} publicclassExceptionExam7 { publicstaticvoidmainString[]argsthrowsException { try { thrownewExcp2; } catchExcp2e { thrownewExcp1; } catchExcp1e { thrownewException; } catchExceptione { } finally { } } } 说明自定义异常类,关键是选择继承的超类——必须是Exception或者其子类用异常代表错误,而不要再使用方法返回值 13.答所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一抽象为数据流数据流可分为输入流和输出流,输入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列 流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写所以流和队列一样,只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置 14.答两者都作为Object类的直接子类,基本输入流(无效Stream)和基本输出流(OutputStream)是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字符流的类 15.答构造函数有
(1)publicFileStringpathname创建一个对应于参数pathname的File类对象参数pathname是包含目录和文件名的字符串如果没有文件名,则代表目录
(2)publicFileStringparentStringchild该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称
(3)publicFileFileparentStringchild该构造函数与上面一个不同在于将parent的参数类型由String变为File,代表parent是一个已经创建的File类文件对象(指向目录) 常用方法有
(1)publicbooleancanWrite返回文件是否可写
(2)publicbooleancanRead返回文件是否可读
(3)publicbooleancreateNewFile当文件不存在时创建文件 16. classCopyFile{ publicstaticvoidmainString[]args{ Stringfile1file2; intch=0; try{ file1=args
[0]; file2=args
[1]; File无效Streamfis=newFile无效Streamfile1; FileOutputStreamfos=newFileOutputStreamfile2; whilech=fis.read!=-1 fos.writech; fis.close; fos.close; } catchFileNotFoundExceptione{ }catchArrayIndexOutOfBoundsExceptione{ System.exit-1; } catchIOExceptione{ } } } 17.答 publicclassNewFile{ publicstaticvoidmainStringargs[]{ Filef=newFiletest; iff.existsf.isDirectory else{ iff.mkdir{ Filef2=newFilefmy.txt; try{ f
2.createNewFile; f
2.setReadOnly; }catchIOExceptione{ } } else } } } 18.答要实现对文件的随机读取,也就是在文件的任何位置执行读写数据的操作,需要一个指针来指定读写的位置在创建RandomAccessFile类对象的同时,系统自动创建了一个指向这个文件开头的指针,当执行读写操作后,指针自动指向被读写数据之后的第一个字节处指针初始值是0,每读/写一个字节,指针自动增加1RandomAccessFile类提供了一些控制指针移动的方法 publiclonggetFilePointer;获取当前指针指向文件的位置考试大论坛 pulbicvoidseeklongpos;将指针移动到参数pos指定的位置 publicintskipBytesintn;指针从当前位置向后移动n个字节位置,并返回指针实际移动的字节数 19.答 publicclassCount{ publicstaticvoidmainString[]args { intx=0y=0z=0; intch; try{ ifch=Ach=Z||ch=ach=z x++; elseifch=0ch=9 y++; else z++; } }catchIOExceptione{ } } } 20.答 publicclassInFile{ publicstaticvoidmainString[]args { intch; try{ FileOutputStreamout=newFileOutputStreama.txt; out.writech; } out.close; }catchIOExceptione{ } } } 21.答 publicclassSort{ publicstaticvoidmainStringargs[] { inta[]=newint
[10]; byteb[]=newbyte
[10]; intt; Stringstr; try{ forinti=0;i10;i++ str=newStringb; str=str.trim; a[i]=Integer.parseIntstr; } }catchIOExceptione{ } catchNumberFormatExceptione{ } forinti=0;i9;i++ forintj=i+1;j10;j++ { ifa[i]a[j]{ t=a[i]; a[i]=a[j]; a[j]=t; } } forinti=0;i10;i++ } }自考Java语言程序设计
(一)第九章JavaApplet概述课后习题
九、JavaApplet概述 1.下列方法中,哪一个不是Applet的基本方法() A、initB、runC、stopD、start 2.在Java中判定Applet的来源的方法有() A、getcodebaseB、get文档base C、getCodeBaseD、get文档Bade
3.下面关于Applet的说法正确的是 A、Applet也需要main方法 B、Applet必须继承自javawt.Applet C、Applet能访问本地文件 D、Applet程序不需要编译
4.Applet类的直接父类是 A.Component类 B.Container类 C.Frame类 D.Panel类
5.判断一个Applet编译后的类名是Test.class,运行此小程序的命令是JavaTest 7.在第一次加载Applet时,默认最先执行的方法是________ 8.调用________方法可以把HTML网页中的参数传递给Applet来源考试大 9.使用________方法可以从Web站点上下载声音,并调用play方法和loop方法播放它们 10.Java程序可以通过调用哪个方法完成重画任务? 参考答案 1.B 2.CD
3.C
4.C
5.false
6.主 7.init 8.getParameter 9.getAudioClip 10.repaint自考Java语言程序设计
(一)第十一章图形界面—窗体简介课后习题
十一、图形界面—窗体简介 1.判断每个applet上只能使用一种布局管理器() 2.判断使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上()
3.判断在使用BorderLayout时,最多只能包含5个组件()
4.判断使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上
5.__________用于安排容器上的GUI组件
6.GUI是_______________的缩写
7.当释放鼠标按键时,将产生________________事件
8.哪个布局管理器使用的是组件的最佳尺寸
9.Frame的默认的布局管理器是下列哪一个 10.编写程序,创建下面的GUI不必为各组件提供功能考试大收集整理 参考答案 1false 2:true 3true
4.true 5:版面管理器
6.图形用户界面
7.mouseReleased
8.C
9.B
10. importjavawt.*; publicclassChp9_3_AextendsFrame{ TextFieldt=newTextField; String[]op={789/456*123-
0.=+}; Button[]btn=newButton
[16]; Panelp=newPanel; publicChp9_3_A{ setLayoutnewBorderLayout; p.setLayoutnewGridLayout44; forinti=0;i btn[i]=newButtonop[i]; p.addbtn[i]; } addtBorderLayout.NORTH; addpBorderLayout.CENTER; setSize400300; } publicstaticvoidmainString[]args{ newChp9_3_A.setVisibletrue; } }自考Java语言程序设计
(一)第十二章课后习题
十二、常用组件之一________命令按钮与标签框 1.判断标签是是一个容器()
2.判断在Swing用户界面的程序设计中,容器可以被添加到其它容器中去
3.用户不能修改的文本称为_______ 4.关于awt和swing说法正确的是来源考试大 A、awt在不同操作系统中显示相同的风格 B、swing在不同的操作系统中显示相同的风格 C、javawt的子类 D、awt和swing都支持事件模型
5.下列_________用户图形界面组件在软件安装程序中是常见的 a.滑块 b.进度条来源考试大 c.对话框 d.标签
6.包含可单击按钮的类的Java类库是__________ a.AWT b.Swing d.二者都没有
7.下面的__________用户界面组件不是容器 a.JScrollPane b.JFrame考试大-全国最大教育类网站www.Examdacom c.JWindows d.JScrollBar
8.创建下面的GUI,颜色列表框为红色、绿色和蓝色(不必为各组件提供功能) 参考答案
1.false
2.true
3.标签 4.BD
5.B
6.C
7.D
8.参考程序如下 importjavawt.*; publicclassChp9_3_BextendsFrame{ Choicech; Checkboxbgfg; ButtonbtnOKbtnCancel; Panelpp1p2; publicChp9_3_B{ p=newPanel; p.setLayoutnewGridLayout21; p1=newPanel; p2=newPanel; p
1.setLayoutnewFlowLayout; p
2.setLayoutnewFlowLayout; ch=newChoice; ch.add红色; ch.add绿色; ch.add蓝色; bg=newCheckbox背景; fg=newCheckbox前景; p
1.addbg; p
1.addfg; btnOK=newButton确定; btnCancel=newButton取消; p
2.addbtnOK; p
2.addbtnCancel; p.addp1; p.addp2; addchBorderLayout.NORTH; addpBorderLayout.CENTER; setSize400300; } publicstaticvoidmainString[]args{ newChp9_3_B.setVisibletrue; } }自考Java语言程序设计
(一)第十三章课后习题
十三、常用组件之二_______单行文本框与多行文本框,单选框和复选框
1.判断列表对象总包含滚动条()
2.判断面板的默认管理器是BorderLayout
3.____________类用于创建一组单选按钮来源考试大
4. 欲编写如下图的一个界面,用于显示用户指定的图像:如果在区域A中只能放置一个 AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件 A、TextArea B、Panel C、Applet D、Canvas 5.Java应用程序中的默认外观是_________ A.Motif B.Windows C.METAl
6.创建下面的GUI,要求在文本框中输入分数,单击“求和”按钮后在结果文本框中显示总分 7.编写一个将华氏温度转换为摄氏温度的程序应从键盘输入华氏温度,然后通过文本显示转换后的摄氏温度使用下面的公式进行温度转换 摄氏温度=5/9Χ华氏温度-32 8.编写一个程序,使用户能够使用鼠标在applet中绘制一个矩形按住鼠标左键,确定矩形的左上角,然后拖动鼠标,在需要的位置(即矩形右下角)释放鼠标另外,在状态栏中显示矩形面积 参考答案
1.false
2.true
3.CheckboxGroup
4.D 5.C
6.参考程序如下 importjavawt.*;来源考试大 publicclassChp9_3_CextendsFrameimplementsActionListener{ TextFieldtextField1textField2textField3; Buttonbutton1=newButton求和; Panelpanel1panel2; publicChp9_3_C{ textField1=newTextField; textField2=newTextField; textField3=newTextField; panel1=newPanel; panel2=newPanel; panel
1.setLayoutnewGridLayout32; panel
2.setLayoutnewFlowLayout; panel
1.addnewLabel数学:; panel
1.addtextField1; panel
1.addnewLabel英语:; panel
1.addtextField2; panel
1.addnewLabel总分:; panel
1.addtextField3; panel
2.addbutton1; addpanel1BorderLayout.CENTER; addpanel2BorderLayout.SOUTH; button
1.addActionListenerthis; setSize300200; setVisibletrue; } publicstaticvoidmainString[]args{ newChp9_3_C; } publicvoidactionPerformedActionEvente{ intn1n2sum; n1=Integer.parseInttextField
1.getText; n2=Integer.parseInttextField
2.getText; sum=n1+n2; textField
3.setText+sum; } } 6.参考程序如下 importjavawt.*; publicclassChp9_3_DextendsFrame{ TextFieldtextField1textField2; Buttonbutton1; publicChp9_3_D{ textField1=newTextField30; textField2=newTextField30; button1=newButton转换; setLayoutnewFlowLayout; addnewLabel华氏温度; addtextField1; addnewLabel摄氏温度; addtextField2; textField
2.setEditablefalse; addbutton1; setSize400300; pack; button
1.addActionListenernewActionListener{ publicvoidactionPerformedActionEvente{ button1_actionPerformede; } }; addWindowListenernewWindowAdapter{ publicvoidwindowClosingWindowEvente{ System.exit0; } }; } publicstaticvoidmainString[]args{ newChp9_3_D.setVisibletrue; } privatevoidbutton1_actionPerformedActionEvente{ doubled=Double.parseDoubletextField
1.getText; doubleh=
5.0/
9.0*d-32; textField
2.setText+h; } } 7.参考程序如下 importjavapplet.Applet; importjavawt.*; publicclassChp9_3_EextendsAppletimplementsMouseListenerMouseMotionListener{ intx1y1x2y2; publicvoidinit{ addMouseListenerthis; addMouseMotionListenerthis; } publicvoidpaintGraphicsg{ g.drawRectx1y1x2y2; intarea=Math.absx2-x1*Math.absy2-y1; showStatus矩形面积:+area; } //implementationofMouseListener publicvoidmousePressedMouseEvente{ x1=e.getX; y1=e.getY; } publicvoidmouseClickedMouseEvente{} publicvoidmouseEnteredMouseEvente{} publicvoidmouseExitedMouseEvente{} publicvoidmouseReleasedMouseEvente{} //implementationofMouseMotionEvent publicvoidmouseDraggedMouseEvente{ x2=e.getX; y2=e.getY; repaint; } publicvoidmouseMovedMouseEvente{} }。