Java并发编程实践课程习题与答案Java面向对象.docx
- 文档编号:4592976
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:21
- 大小:94.17KB
Java并发编程实践课程习题与答案Java面向对象.docx
《Java并发编程实践课程习题与答案Java面向对象.docx》由会员分享,可在线阅读,更多相关《Java并发编程实践课程习题与答案Java面向对象.docx(21页珍藏版)》请在冰豆网上搜索。
Java并发编程实践课程习题与答案Java面向对象
Java并发编程实践课程习题与答案
Java语言概述
1、Java源程序是由什么组成的?
一个程序中必须有public类吗?
Java源文件的命名有什么规定?
2、应用程序和小应用程序的主要区别是什么?
3、开发与运行应用程序需要经过哪些主要步骤和过程?
4、安装JDK之后如何设置JDK系统的PATH,CLASSPATH?
他们的作用是什么?
5、Java语言特点是什么?
6、分别用JDK、GEL和Eclipse编写能输出“HelloWorld!
”的Java应用程序。
Java面向对象程序设计基础
1、什么是类?
什么是对象?
对象和类是什么关系?
2、什么是方法?
结构方法和一般方法有什么区别?
设计方法应考虑哪些因素?
3、为什么要将类进行封装,封装的原则是什么?
4、创建一个有两个方法的类,要求其中第一个方法两次调用第二个方法,第一次不使用this,第二个使用this。
5、要求设计一个矩形类Rectangle,要求实现构造方法的多态。
并利用这些构造方法实例化不同的对象,并输出相应的信息。
6、计算出Fibinacii序列的前n项,n的值要求从命令行输入。
Fibinacii序列的前两项是1,后续每项的值都是该项的前两项之和。
即
F(n)=F(n-1)+F(n-2)
F
(1)=F
(2)=1;
7、什么是继承?
什么是父类?
什么是子类?
继承的特性可给面向对象编程带来什么好处?
什么是单重继承?
什么是多重继承?
8、“子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目”,这种说法是否正确?
为什么?
9、什么是方法的覆盖?
方法的覆盖与域的隐藏有何不同?
与方法的重载有何不同?
10、什么是多态?
面向对象程序设计为什么要引人多态的特性?
使用多态有什么优点?
11、父类对象与子类对象相互转化的条件是什么?
如何实现它们的相互转化?
12、一个类如何实现接口?
实现某接口的类是否一定要重载该接口中的所有抽象方法?
13、编写求解几何图形(如直线、三角形,矩型,圆,多边型)的周长,面积的应用程序,要求用到继承和接口等技术。
14、编写求解一元多次方程(如一元一次,一元二次,一元高次方程)的解。
15、找出以下代码有错误的部分
publicintsearchAccount(intnumber[25]){
number=newint[15];
for(inti=0;i number[i]=number[i-1]+number[i+1]; returnnumber; } 16、将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母. 17、求若干个数的平均数,若干个数从键盘输入. 18、将一个字符串数组按字典序重新排列. 19、编写应用程序,分析字符串,分别输出字符串的单词,并统计出单词个数. 20、编写应用程序,实现字符串“Dot saw I was Tod”的倒转。 21、找出两个字符串中所有共同的字符。 答案 1、Java程序是由什么组成的? 一个程序中必须有public类吗? Java源文件的命名规则是怎样的? 答: 一个Java源程序是由若干个类组成。 一个Java程序不一定需要有public类: 如果源文件中有多个类时,则只能有一个类是public类;如果源文件中只有一个类,则不将该类写成public也将默认它为主类。 源文件命名时要求源文件主名应与主类(即用public修饰的类)的类名相同,扩展名为.java。 如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它将无法进行被继承使用。 另外,对Applet小应用程序来说,其主类必须为public,否则虽然在一些编译编译平台下可以通过(在BlueJ下无法通过)但运行时无法显示结果。 2、怎样区分应用程序和小应用程序? 应用程序的主类和小应用程序的主类必须用public修饰吗? 答: JavaApplication是完整的程序,需要独立的解释器来解释运行;而JavaApplet则是嵌在HTML编写的Web页面中的非独立运行程序,由Web浏览器内部包含的Java解释器来解释运行。 在源程序代码中两者的主要区别是: 任何一个JavaApplication应用程序必须有且只有一个main方法,它是整个程序的入口方法;任何一个Applet小应用程序要求程序中有且必须有一个类是系统类Applet的子类,即该类头部分以extendsApplet结尾。 应用程序的主类当源文件中只有一个类时不必用public修饰,但当有多于一个类时则主类必须用public修饰。 小应用程序的主类在任何时候都需要用public来修饰。 3、开发与运行Java应用程序需要经过哪些主要步骤和过程? 答: 主要有三个步骤 (1)、用文字编辑器notepad(或在Jcreator,Gel,BuleJ,Eclipse,Jbuilder等)编写源文件; (2)、使用Java编译器(如Javac.exe)将.java源文件编译成字节码文件.class; (3)、运行Java程序: 对应用程序应通过Java解释器(如java.exe)来运行。 4、安装JDK之后如何设置JDK系统的PATH,CLASSPATH? 他们的作用是什么? 答、更新系统PATH的方法随Windows版本不同而不同。 对于Windows95/98,可以将下列项目作为C: \autoexec.bat文件的最后一行: SETPATH=d: \jdk1.5.0\bin;%PATH% 当程序需要第三方的类库支持,而且比较常用,就可以采用此种方法.比如常用的数据库驱动程序,写servlet需要的servlet包等等.设置方法就是在环境变量中加入CLASSPATH.然后就可以直接编译运行了.Java运行环境从CLASSPATH环境变量中寻找要执行的用户项目(三方的类库)。 可以按如下的方式设置 SETCLASSPATH=.;d: \jdk1.5.0\jre\lib\rt.jar;%CLASSPATH% 通常我们要从当前目录中寻找用户类,因为开发的程序相关的类放在这里,.表示当前工作目录. 5、Java语言特点是什么? 答: Java是一种简单的、面象对象的、分布式的、健壮的、安全的、结构中立的、可移植的、性能很优异的多线程的、动态的计算机语言。 6、使用Eclipse编写能输出“HelloWorld! ”的Java应用程序。 答: 1) 我们将在Navigator中创建一个项目。 右键单击Navigator视图,然后选择New=>Project。 当NewProject对话框出现时,选择左面的Java。 标准Eclipse只有一种Java项目类型,名为“JavaProject”。 选择JavaProject,在提示项目名称时输入“Hello”,然后按Finish。 右键单击“Hello”项目,选择New=>Class,如图2所示。 在随后出现的对话框中,键入“Hello”作为类名称。 在“Whichmethodstubswouldyouliketocreate? ”下面,选中“publicstaticvoidmain(String[]args)”复选框,然后按Finish。 图2.在Java透视图中创建新类 这样将在编辑器区域创建一个包含Hello类和空的main()方法的.java文件,如图3所示。 然后向该方法添加如下代码 一旦代码无错误地编译完成,就能够从Eclipse菜单上选择Run来执行该程序。 这时会出现一个具有适当默认设置的LaunchConfigurations对话框;请按右上角的Run按钮。 一个新的选项卡式窗格将出现在下面的窗格(控制台)中,其中显示了程序的输出。 1、什么是类? 什么是对象? 对象和类是什么关系? 答: 类是抽取了同类对象的共同属性和行为形成的对象或实体的“模板”。 对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体。 类和对象之间的关系是抽象和具体的关系: 类表达的是一种抽象的概念,它描述了该类对象的共同特征;而对象是具体事物,以类为模板来生成,它具有自己的状态。 举例: 类与对象的关系犹如零件的图纸与按图纸制造出的零件关系一样;图纸(类)描述了零件(对象)的共同特征,每个零件(对象)又有自己的个性,如加工精度的不同等等 2、什么是方法? 方法的结构是怎样的? 设计方法应考虑哪些因素? 答: 方法是Java类的一个组成部分,通过类的方法改变对象的状态。 方法的结构: [方法修饰符]返回值类型方法名([形参列表])[throws异常列表] { 方法体; } 设计方法应考虑因素有: (1) 方法名是Java中任意的标识符,按照命名的约定,方法名应该是有意义的动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。 (2) 返回值类型可以是任意的Java类型,甚至可以是定义此方法的类。 如果方法没有返回值,则用void表示。 (3) 形式参数列表是可选的。 如果方法没有形式参数,就用一对小括号“()”表示。 形式参数列表的形式如下: (类型形参名,类型形参名,……) (4) throws异常列表规定了在方法执行中可能导致的异常。 3、创建一个有两个方法的类,要求其中第一个方法两次调用第二个方法,第一次不使用this,第二个使用this。 答: classRectangle//矩形类 { intwidth;//矩形的宽 intusethis(intwidth)//返回宽度的函数 {this.width=width;//指自己这个对象 returnwidth; } intunusethis(intwidth) {intw=width; returnw; } publicstaticvoidmain(Stringargs[]) { Rectangler=newRectangle();//类对象的实例化 System.out.println("Itisaboutthenodeofthis.");//输出语句 System.out.println(r.usethis (1)); System.out.println(r.unusethis (2)); 运行结果: Itisaboutthenodeofthis. 1 2 4、要求设计一个矩形类Rectangle,其中含有多个构造方法。 利用这些构造方法实例化不同的对象,并输出相应的信息。 答: importjava.io.*; classRectangle//矩形类 { privateintwidth;//矩形的宽度 privateintlength;//矩形的长度 Rectangle()//矩形的不带参数的构造函数,缺省的给出长(30)和宽(20) { length=30;width=20; } Rectangle(intl,intw)//矩形的带参数的构造函数 { length=l;width=w; } Rectangle(Rectangler)//此构造方法以另一个Rectangle作为参数 { width=r.width();//通过对象调用函数并附值给相应变量 length=r.length(); } intwidth()//返回宽度 { returnwidth; } intlength()//返回长度 { returnlength; } } publicclassCRctngle { publicstaticvoidmain(Stringargs[]) { Rectanglex1=newRectangle();//声明类的对象并实例化 Rectanglex2=newRectangle(50,40);//声明类的对象并初始化 Rectanglex3=newRectangle(x1); System.out.println(x1.length()); System.out.println(x1.width()); System.out.println(x2.length()); System.out.println(x2.width()); System.out.println(x3.length()); System.out.println(x3.width()); } } 运行结果: 30 20 50 40 30 20 体会: 此程序中共定义了3个构造方法: Rectangle()、Rectangle(intl,intw)、Rectangle(Rectangler),其中Rectangle()是没有参数的,Rectangle(intl,intw)以常数作为参数,Rectangle(Rectangler)是以对象最为参数。 构造函数调用时在用new运算符创建类对象是由系统自动完成的,构造函数的参数传递和形实结合也是由系统在调用的同时自动完成。 5、计算出Fibinacii序列的前10项,Fibinacii序列的前两项是1,后续每项的值都是该项的前两项之和。 即 F(n)=F(n-1)+F(n-2) F (1)=F (2)=1; 答: classFibi {publiclongfibinacii(intn) {longc=0; if(n==1||n==2) c=1; else c=fibinacii(n-1)+fibinacii(n-2); returnc; } } publicclassExample4_5 {publicstaticvoidmain(Stringargs[]) {Fibia=newFibi(); for(inti=1;i<=10;i++) {System.out.print(""+a.fibinacii(i)); } } 6、什么是继承? 什么是父类? 什么是子类? 继承的特性可给面向对象编程带来 什么好处? 什么是单重继承? 什么是多重继承? 解: 继承是面向对象程序设计中两个类之间的一种关系。 当一个类获取另一个类中 所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具 有继承关系。 被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称 为子类。 面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。 如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个 父类,则这种继承关系称为多重继承。 7、“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否 正确? 为什么? 解: 这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所 有非私有的域和方法。 如果子类在继承之外自己定义的域和方法数目小于父类中私有成 员的数目,则子类的域和方法的数目小于父类的域和方法的数目。 8、什么是方法的覆盖? 方法的覆盖与域的隐藏有何不同? 与方法的重载有何不同? 解;子类重新定义父类中已经存在的方法,称为方法的覆盖。 注意: 方法覆盖与域的 隐藏不同。 子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域, 这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法 时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席 之地。 与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。 9、什么是多态? 面向对象程序设计为什么要引人多态的特性? 使用多态有什么优点? 解: 一个类中存在多个同名的方法,称为多态。 把抽象功能和目的相同,而具体实现 因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、 隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦 合和依赖。 10、父类对象与子类对象相互转化的条件是什么? 如何实现它们的相互转化? 解: 一个子类对象也可以被合法地视为一个父类的对象,即一个父类对象的引用,其 指向的内存单元可能实际上是一个子类的对象。 在这种情况下,可以使用强制类型转换, 将父类对象的引用转换成实际的子类对象的引用 11、一个类如何实现接口? 实现某接口的类是否一定要重载该接口中的所有抽象 方法? 解: 使用关键字implements可以定义类实现某接口。 实现某接口的类如果不是抽 象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以 不必实现该接口中的所有抽象方法。 13、编写求解几何图形(如直线、三角形,矩型,圆,多边型)的周长,面积的应用程序,要求用到继承和接口等技术。 解: //Solutionofdrawingsastriangle,rectangle,circle importjava.io.*; //interface interfacegetProperty { doublePi=3.1415926; doublegetArea(); doublegetCircum(); StringgetName(); } // classmpoint { staticinti=0; doublex,y; Stringstrmpoint; mpoint(doublea,doubleb) { this.x=a; this.y=b; } doublegetX(){ returnx; } doublegetY() { returny; } StringgetString() { i+=1; strmpoint="mpoint"+i;//nameofampoint; returnstrmpoint; } } //dispclass classdisp{ doublearea; doublecircum; StringdrawingName; disp(doublea,doubleb,Stringss){ this.area=a; this.circum=b; this.drawingName=ss; } publicvoiddisplay(){ System.out.println("Drawingis"+drawingName); System.out.println("Area="+area+"Circum="+circum); } } //classtriangle classtriangleimplementsgetProperty{ mpointp1,p2,p3; doubles1,s2,s3; StringdrawingName="Triangle"; triangle(mpointp1,mpointp2,mpointp3){ this.p1=p1; this.p2=p2; this.p3=p3; this.s1=Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); this.s2=Math.sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y)); this.s3=Math.sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y)); } publicdoublegetArea(){ doubless,ssa; ss=(s1+s2+s3)*Pi/2.0/Pi; ssa=Math.sqrt(ss*(ss-s1)*(ss-s2)*(ss-s3)); returnssa; } publicdoublegetCircum(){ returns1+s2+s3; } publicStringgetName(){ returndrawingName; } publicbooleantline(){ returntrue; } } // //circleclass classcircleimplementsgetProperty{ mpointp1; doubleradius; StringdrawingName="Circle"; circle(mpointp1,doubleradius){ this.p1=p1; this.radius=radius; } publicdoublegetArea(){ doublessa; ssa=Math.PI*radius*radius; returnssa; } publicdoublegetCircum(){ returnMath.PI*2.0*radius; } publicStringgetName(){ returndrawingName; } publicbooleantcircle(){ returntrue; } } //classrectangle classrectangleimplementsgetProperty{ mpointp1,p2; doubles1,s2; StringdrawingName="Rectangle"; rectangle(mpointp1,mpointp2){ this.p1=p1; this.p2=p2; this.s1=Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)); this.s2=Math.sqrt((p1.y-p2.y)*(p1.y-p2.y)); } publicdoublegetArea(){ returns1*s2; } publicdoublegetCircum(){ returns1+s2+s1+s2; } publicStringgetName(){ returndrawingName; } publicbooleanrline(){ returntrue; } } //mainclass classdrawingextendsdisp{ draw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 并发 编程 实践 课程 习题 答案 面向 对象
![提示](https://static.bdocx.com/images/bang_tan.gif)