




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
41习题参考答案习题参考答案第1章 Java语言概述习题内容1Java语言有哪些特点?2什么叫做类?什么叫做对象?3简述Java的运行机制。4简述Java应用程序的开发流程。5略。参考答案1答:面向对象、简单、平台无关性、安全性、内存管理、分布式应用、多线程、动态、解释运行,高效能2答:在面向对象编程中,具体的客观实体称为对象,对象就是数据加方法。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类。类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。3答:Java程序的运行必须经过编写、编译、运行三个步骤。编写是指在Java开发环境中进行程序代码的输入过程,最终形成后缀名为.java的Java源文件。编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件。运行是指使用Java解释器将字节码文件翻译成机器代码,在cpu上运行并显示结果的过程。这一过程如图所示。字节码文件(*.class)Java源文件(*.java)Java编译器Java解释器运行4Java应用程序的运行经过编写、编译、运行三个步骤。第1步,编写程序。使用记事本或其他软件编写程序的源代码,将源代码保存为文件filename.java文件。第2步,编译程序。在MS-DOS命令窗口,将当前目录转换到Java源程序所在的保存目录;输入“javac filename.java”形式的命令进行程序编译。第3步,执行程序。在同样的命令窗口中输入“java filename” 形式的命令执行程序。完成了程序的开发,查看相应t目录,其中应该具有两个文件,分别是XXXX.java和XXXX.class。第2章 数据类型和流程控制习题内容1. 现有语句:String s = Example; 则下面哪些语句是合法语句?cdeA. s = 3;B. s3 = x;C. int i = s.length();D. String t = For + s;E. s = s + 10;2下面哪些是保留字?bdA. run B. default C. implement D. import3下面声明float变量的语句合法的有a,d,f:A. float foo = -1; B. float foo = 1.0; C. float foo = 42e1; D. float foo = 2.02f; E. float foo = 3.03d; F. float foo = 0x0123;4. 下面方法中的“返回类型Type”应该是什么?public class ReturnIt returnType methodA(byte x, double y) return (short)x / y * 2; 5以下哪两个表达式是等价的:A. 3/2 B. 32C. 3*4 D. 32 E. 3*22F. 3 j) break tp; System.out.println(i= + i + ,j= + j); (4)public class Test public static void main() int i = 1, j = 10; do if(i+ -j)continue; while(i 5); System.out.println(i= + i + j= + j); (5)class Value public int i = 15; public class Test public static void main(String argv) Test t = new Test(); t.first(); public void first() int i = 5; Value v = new Value(); v.i = 25; second(v, i); System.out.println(v.i); public void second(Value v, int i) i = 0; v.i = 20; Value val = new Value(); v = val; System.out.println(v.i + + i); 参考答案1cde2b,d3a,d,f4double5c,d6(1)c(2)5(3)i = 0, j = -1(4)i=5 j=6(5)15 0 20第3章 类和对象习题内容1什么叫引用类型,对象是引用类型吗?2Java的访问限定修饰符有几种,各自的访问权限是什么?3什么是类成员,什么是实例成员?他们之间有什么区别?4如何创建自己的包,如何引入包?5下面哪一个是类Myclass的构造函数? class Myclasspublic void Myclass()public static Myclass()public Myclass()public static void Myclass()6设计一个动物类,它包含动物的基本属性。例如名称、大小、重量等,并设计相应的动作,例如跑、跳、走等。7设计Point类用来定义平面上的一个点,用构造函数传递坐标位置。编写测试类,在该类中实现Point类的对象。8编写程序说明静态成员和实例成员的区别。9设计一个长方形类,成员变量包括长和宽。类中有计算面积和周长的方法,并有相应的set方法和get方法设置和获得长和宽。编写测试类测试是否达到预定功能。要求使用自定义的包。10设计雇员Employee类,记录雇员的情况,包括姓名、年薪、受雇时间,要求定义MyDate类作为受雇时间,其中包括工作的年、月、日,并用相应的方法对Employee类进行设置。编写测试类测试Employee类。要求使用自己的包。参考答案1答:引用类型是指该类型的标识符表示的是一片内存连续地址的首地址。对象是引用类型。2答:Java的访问限定修饰符有4种,分别使public、protected、private和默认修饰符。用public修饰的类或成员拥有公共作用域,表明此类或类的成员可以被任何Java中的类所访问,是最广泛的作用范围。用protected修饰的变量或方法拥有受保护作用域,可以被同一个包中所有的类及其他包中该类的子类所访问。用private修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子类也是不允许访问的,private是最保守的作用范围。没有任何修饰符拥有默认访问权限(友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问3答:Java中使用static修饰的变量和方法称为类变量(或称静态变量)和类方法(或称静态方法),没用static修饰符的变量和方法称为实例变量和实例方法。类成员是指该成员属于这个类,由这个类所创建的所有对象共同拥有,该成员仅在类的存储单元中存在,这个类所创建的所有对象中仅存储一个指向该成员的引用。任何一个该类的对象改变了类成员,其他对象同样会发生改变。对于类成员既可以使用对象访问,也可以使用类名直接进行访问,并且在类方法中只能访问类变量,而不能访问实例变量。实例成员是指该成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员,不同对象的实例成员不同,任何一个对象改变了实例成员,只会影响这个对象本身,其他对象中的实例成员不会发生改变。对于实例成员只能通过对象来访问,不能通过类名进行访问,在实例方法中既可以访问实例变量,也可以访问类变量。4答:创建自己的包只要将package语句作为Java源文件的第一句就可以了。例package myPackage; 声明创建了一个名为myPackage的包。Java使用import语句来引入包及其中的类。例如import myPackage.*;就引入了myPackage包中所有的类。5答:public Myclass()是类Myclass的构造函数。6答:public class Animalprivate String name;private double weight;private int length;privateString sex; public void run()System.out.println(the animal is running!);public void jump()System.out.println(the animal is jumping!);public void walk()System.out.println(the animal is walking!);7答:class Point int x,y; Point(int a,int b) x=a; y=b; public class A public static void main(String args) Point p1,p2; p1=new Point(10,10); p2=new Point(23,35); 8答:class StaticTestint i=5;static int j=5;void print()System.out.println(i=+i);System.out.println(j=+j);static void classprint()/System.out.println(i=+i);System.out.println(j=+j);class Testpublic static void main(String args)/System.out.println(StaticTest.i);System.out.println(StaticTest.j);/StaticTest.print();StaticTest.classprint();StaticTest st=new StaticTest();System.out.println(st.j);System.out.println(st.j);st.print();st.classprint();9答:package mypackage.math;class Rectangleprivate int length;private int width;public Rectangle(int length,int width)this.length=length;this.width=width;public void set(int length,int width)this.length=length;this.width=width;public void get()System.out.println(此长方形的长为+length+宽为+width);public int getLength()return length;public int getWidth()return width;public int calculatePerimeter()return 2*(length+width);public int calculateArea()return (length*width);public void print()System.out.println(此长方形的周长为+calculatePerimeter()+面积为+calculateArea();class Testpublic static void main(String args)Rectangle myrectangle=new Rectangle(15,10);myrectangle.get();myrectangle.print();myrectangle.set(20,15);System.out.println(长方形的长是+myrectangle.getLength()+宽是+ myrectangle .getWidth();myrectangle.print();10答: package mypackage.employee;class MyDateprivate int year;private int month;private int day;public MyDate(int year,int month,int day)this.year=year;this.month=month;this.day=day;public int getYear()return year; public class Employeeprivate String name;private double salary;private MyDate hireDay;public Employee(String name,double salary,MyDate day)=name;this.salary=salary;hireDay=day;public void print()System.out.println(name+ +salary+ +hireYear();public int hireYear()return hireDay.getYear();class TestEmployeepublic static void main(String args)Employee a=new Employee(李明,20000,new MyDate(2000,10,1);Employee b=new Employee(王强,24000,new MyDate(1995,8,12);a.print();b.print();第4章 数据类型类和数组对象习题内容1数据类型类的MAX_VALUE属性和MIN_VALU属性代表了什么?2简述数据类型类的常用方法。3下面程序的输出结果是什么?public class A public static void main(String args) int a = 11,12,13,14;int b = 0,1,2,3;System.out.println(a(a=b)3);System.out.println(a2); 4下面程序的输出结果是什么?public class A public static void main(String args) int size=10;int array = new intsize;size=20;System.out.println(array.length); 5设计一个程序,将一维数组中的元素的顺序倒置,若数组元素的顺序原来是1、2、3、4、5,则倒置后的顺序变为5、4、3、2、1。6 设定10个数存入一维数组中,求其中的最小值。7设定一批整数,使用选择法对其从小到大排序并输出。8设定5行5列的二维数组,求其中主对角线上元素的和。9从命令行中接收两个姓名字符串,按照“Hello 姓名2 and 姓名1”的格式输出。若输入是“ Jerry Tom”则输出是“Hello Tom and Jerry ”。参考答案1答:MAX_VALUE属性代表数据类型类所表示的最大值,MIN_VALU属性:代表数据类型类所表示的最小值。2(略,见教材中)3答案:14 和 2 4结果:105程序代码如下:public class A public static void main(String args) int array = 1,2;int temp;for(int i=0,j=array.length-1; i=j) break; temp = arrayj; arrayj = arrayi; arrayi = temp;for(int i=0; iarray.length; i+) System.out.println(arrayi);6程序设计如下: public class Exam4_1 public static void main(String args) int min; int array = 30,81,37,45,26,46,44,78,80,64;/初始化赋值 System.out.println(数组元素为:); for(int i=0; iarray.length; i+) System.out.println( +arrayi); /输出数组元素 /寻找数组中数值最小的元素 min=array0;for(int i=1;iarray.length;i+) if(arrayimin) min=arrayi;System.out.println(n最小数为:+min);7程序设计如下:public class Exam4_2 public static void main(String args) int a = 30,81,37,45,26,46,44,78,80,64; int i,j,min,temp; System.out.println(排序前数组元素为:); for(i=0; ia.length; i+) System.out.print(ai+ ); for(i=0; ia.length-1; i+) min=i; for(j=i+1; ja.length; j+) if(ajamin) min=j; if(min != i) temp = ai; ai = amin; amin = temp; System.out.println(n排序后数组元素为:); for(i=0; ia.length; i+) System.out.print(ai+ );8程序代码如下:public class GetArraySum /求5X5数组中对角线元素的和 public static void main(String args)double a=9.0,8.0,7.0,6.0,5.0,11.0,12.0,13.0,14.0,15.0,20.0,19.0,18.0,17.0,16.0,31.0,32.0,33.0,34.0,35.0,51.0,52.0,53.0,54.0,55.0 ;double sum=0.0;for(int i=0;i5;i+)for(int j=0;j5;j+)if(i=j)sum=sum+aij;System.out.println(对角线元素的和:+sum);9程序代码如下:public class CmdLineTompublic static void main(String args) if (args.length2)System.out.println(至少需要有2个参数!);System. exit(0);/终止程序运行System.out.println(Hello +args1+ and +args0);/ String str=Hello +args1+ and +args0; 也可以/String str=new String(Hello +args1+ and +args0); 也可以/System.out.println(str);第5章 继承和多态习题内容 l什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?2观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法。 class SuperClass int data; voidsetData(intnewData) data=newData intgetData() return data class SubClass extends SuperClass int suhData; void setSubData(intnewData) suhData=new Data; intgetData() return subData; 3“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?4什么是域的隐藏?如果在53题的SubClass中再定义一个变量:int data;则SubClass类中包括哪些域?5什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?6解释this和super的意义和作用。7什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点? 8Java程序如何实现多态?有哪些方式?9根据下面的要求编程实现复数类ComplexNumber。 (1)复数类ComplexNumber的属性 m_dRealPart 实部,代表复数的实数部分。 m_dlmaginPart 虚部,代表复数的虚数部分。 (2)复数类ComplexNumber的方法 ComplexNumber() 构造函数,将实部、虚部都置为0。 ComplexNumber(doubler,doublei) 构造函数,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。 getRealPart() 获得复数对象的实部。 getlmaginaryPart() 获得复数对象的虚部。 setRealPart(doubled) 把当前复数对象的实部设置为给定的形参的数字。 setlmaginaryPart(doubled) 把当前复数对象的虚部设置为给定形参的数字。 complexAdd(ComplexNumberc) 当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。 complexAdd(doublec) 当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。 complexMinus(ComplexNumberc) 当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。10什么是接口?为什么要定义接口?接口与类有何异同?11一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?12接口是否可以被继承?阅读下面的代码,试写出SubInterface中的抽象方法。 interface SupInterface public abstract int supMethod(); interface SubInterface extends SupInterface public abstract string subMethod(); 参考答案l答:继承是面向对象程序设计中两个类之间的一种关系。当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个父类,则这种继承关系称为多重继承。2答:父类 SuperClass父类的域 data 父类的方法 setData(), getData()子类 SubClass子类的域 data, subData子类的方法 setSubData(), setData(), getData()3答:这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所有非私有的域和方法。如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目。4答:如果子类重新定义与父类中已经存在的域同名同类型的域,则它从父类那里继承来的与新定义域同名的域,就变成了被隐藏的域。如果题3中的SubClass中重新定义了父类中已有的域data,则它实际包括三个域:subData、父类定义的data和子类自定义的data。5答:子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的隐藏不同。子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席之地。 与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。6答:关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象。7答:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖。8答:Java程序通过覆盖和重载两种方式来实现多态。覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法。9答:public class ch5_e5_12 public static void main(String args) ComplexNumber cNumber_1 = new ComplexNumber(3,-5); ComplexNumber cNumber_2 = new ComplexNumber(2,2); double d = 10.0; System.out.println(cNumber_1.toString() + 加 + cNumber_2.toString() + 等于 + cNumber_1.complexAdd(cNumber_2).toString(); System.out.println(cNumber_1.toString() + 加 + d + 等于 + cNumber_1.complexAdd(d).toString(); System.out.println(cNumber_1.toString() + 减 + cNumber_2.toString() + 等于 + cNumber_1.complexMinus(cNumber_2).toString(); System.out.println(cNumber_1.toString() + 减 + d + 等于 + cNumber_1.complexMinus(d).toString(); System.out.println(cNumber_1.toString() + 乘 + cNumber_2.toString() + 等于 + cNumber_1.complexMulti(cNumber_2).toString(); System.out.println(cNumber_1.toString() + 乘 + d + 等于 + cNumber_1.complexMulti(d).toString(); class ComplexNumber /域 private double m_dRealPart; private double m_dImaginPart; /构造函数 ComplexNumber() m_dRealPart = 0.0; m_dImaginPart = 0.0; ComplexNumber(double r,double i) m_dRealPart = r; m_dImaginPart = i; ComplexNumber(ComplexNumber c) m_dRealPart = c.getRealPart(); m_dImaginPart = c.getImaginaryPart(); /get,set方法 double getRealPart() return m_dRealPart; double getImaginaryPart() return m_dImaginPart; void setRealPart(double d) m_dRealPart = d; void setImaginaryPart(double d) m_dImaginPart = d; /复数运算方法 ComplexNumber complexAdd(ComplexNumber c) return new ComplexNumber( this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart(); ComplexNumber complexAdd(double c) return new ComplexNumber( this.m_dRealPart + c, this.m_dImaginPart); ComplexNumber complexMinus(ComplexNumber c) return new ComplexNumber( this.m_dRealPart - c.getRealPart(), this.m_dImaginPart - c.getImaginaryPart(); ComplexNumber complexMinus(double c) return new ComplexNumber( this.m_dRealPart - c, this.m_dImaginPart); ComplexNumber complexMulti(ComplexNumber c) return new ComplexNumber( this.m_dRealPart * c.getRealPart() - this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart() + this.m_dImaginPart * c.getRealPart(); ComplexNumber complexMulti(double c) return new ComplexNumber( this.m_dRealPart * c, this.m_dImaginPart * c); /toString() public String toString() return ( + m_dRealPart + + + m_dImaginPart + i + ); 10答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。11答:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。12答:接口可以被继承。 SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();两个。第6章 Java类库介绍习题内容1指出下列陈述是对还是错,并做出解释。(1)当String对象用= = 比较时,如果String包括相同的值则结果为true。(2)一个String类的对象在其创建后可被修改。2对于下列描述,各写出一条语句完成要求的任务(1)比较s1中的串和s2中的串的内容的相等性;(2)用+=向串s1附加串;(3)判断s1中串的长度;3说明capacity()与length()用法上的差异?4如果ch为StringBuffer对象,ch=“Java Apple”,下列结果为何?(1)ch.insert(3,p)(2)ch.append(“Basic”)(3)ch.setlength(5)(4)ch.reverse()5Math类中提供用来常数和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)s1.equals(s1,s2);(2)s1+=s2;(3)s1.length();3答:capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。4答:(1)结果:Javpa Applet(2)结果:Javpa AppletBasic(3)结果:ch长度变为5(4)结果:apvaJ5答:PI、E6答:(3)7public cla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字技术支持服务创新-洞察及研究
- 儿童班创意课件图片大全
- 儿童牙齿健康课件
- 晚节制作流程优化-洞察及研究
- 国企市场方案么
- 交通流量时空特征提取-洞察及研究
- 老林厂房改造方案
- 开采原煤技术方案书
- 村路扩建规划方案
- 水泥质量测评方案
- 新疆警察学院面试问题及答案
- 小学三到六年级全册单词默写(素材)-2023-2024学年译林版(三起)小学英语
- 铁岭市高校毕业生“三支一扶”计划招募笔试真题2022
- DL-T1474-2021交、直流系统用高压聚合物绝缘子憎水性测量及评估方法
- 水利安全生产风险防控“六项机制”右江模式经验分享
- 天然气泄漏事故演练方案及评估
- 《养老机构认知障碍照护专区设置与服务规范》
- 妇科炎症健康教育课件
- 儿科护理学(高职)全套教学课件
- 干眼门诊建设计划书
- MBR膜系统清洗方案
评论
0/150
提交评论