Java语言程序设计-第2版-(郑莉)课后习题答案.doc_第1页
Java语言程序设计-第2版-(郑莉)课后习题答案.doc_第2页
Java语言程序设计-第2版-(郑莉)课后习题答案.doc_第3页
Java语言程序设计-第2版-(郑莉)课后习题答案.doc_第4页
Java语言程序设计-第2版-(郑莉)课后习题答案.doc_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

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

文档简介

Java语言程序设计第2版(郑莉)第二章习题答案1.什么是对象、类,它们之间的联系?答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3) 两者的关系:对象是类的具体实例.。2.什么是面向对象的程序设计方法?它有那些基本特征?答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。它的特征:抽象,封装,继承,多态。3(无用)4请解释类属性、实例属性及其区别。答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。5请解释类方法、实例属性及其区别。答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法;6类的访问控制符有哪几种?具体含义及其区别。答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。7类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限制的作用?答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身访问,在类外不可见。proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点?答:构造方法主要有以下特点:(1) 构造方法的方法名与类名相同;(2) 构造方法没有返回类型(修饰符void也不能有);(3) 构造方法通常被声明为公有的(public);(4) 构造方法可以有任意多个参数;(5) 构造方法的主要作用是完成对象的初始化工作;(6) 构造方法不能在程序中显式的调用;(7) 在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法?答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。10:声明Patient类表示在门诊室中的病人。此类对象应包括()()、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); April.setname(“zhangli”)April.setSex(f);April.setage(330;April.setweigeht(154.72);April.setalolergies(true);System.out.println(“那么: ”+april.getname();System.out.println(“sex: ”+april.getsex();System.out.println(“age: ”+april.getage();System.outprintln(“weught: ”+april.getweight();System.out.println(“allergies: ”+april.getallergies();声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。答:public class Patientprivate String name;private char sex;private int age;private float weight;private boolean allergies;public void setname(String a)name=a;public void setsex(char b)sex=b;public void setage(int c)age=c;public void setweight(float d)weight=d;public void setallergies(boolean e)allergies=e;public String getname()return name;public char getsex()return sex;public int getage()return age;public float getweight()return weight;public boolean getallergies()return allergies;public class Textpublic static void main(String args)Patient april=new Patient();april.setname(ZhangLi);april.setsex(f);april.setage(33);april.setweight(154.72f);april.setallergies(true);System.out.println(Name: +april.getname();System.out.println(sex: +april.getsex();System.out.println(age: +april.getage();System.out.println(weight: +april.getweight();System.out.println(allergies: +april.getallergies();11:声明并测试一个复数类,其方法包括toString()及复数的加、减、乘运算。答:public class Complexprivate float a;private float b;public String toString()if(a!=0)return(a+i+b);else return(+b);public Complex(float a,float b)this.a=a;this.b=b;public void Add(Complex p)this.a+=p.a;this.b+=p.b;public void Decrease(Complex p)this.a-=p.a;this.b-=p.b;public void Multiply(Complex p)this.a=this.a*p.a;this.b=this.b*p.b;public class ComplexTexterpublic static void main(String args)Complex a=new Complex(2,4); Complex b=new Complex(5,8);a.Add(b);System.out.println(a.toString()+n);a.Decrease(b);System.out.println(a.toString()+n);a.Multiply(b);System.out.println(a.toString()+n);12:什么是UML?它由哪几部分组成?答:UML是图形化()即可视化的建模语言,成为面向对象建模的标准语言。它由四部分组成:(1)视图(2)图(3)模型元素(4)通用机制13. 常用的类与类之间的关系有哪几种。答:有关联、依赖、流、泛化、实现、使用。14. 考虑学院、系及教员应该具有哪些属性,并画出它们之间关系的类图。 第三章课后习题答案1.设N为自然数:n!=1*2*3*.*n称为n的阶乘,并且规定0!=1.试编程计算2!,4!,6!he 10!.并将结果输出到屏幕上。答: public class Mulpublic static void main(String args)int i,n;float s;for(n=0;n=10;n=n+2)if(n=0)System.out.println(0!=1n);elses=1;for(i=1;i=n;i+)s=s*i;System.out.println(n+!=+s+n);2.编写程序,接收用户从键键盘上输入的三个整数x,y,z.从中选出最大和最小者,并编程实现。答:public class Mathpublic static void main(String args)int IntArg = new intargs.length;for(int i=0;iIntArg1?IntArg0:IntArg1;max=maxIntArg2?max:IntArg2;min=IntArg0IntArg1?IntArg0:IntArg1;min=minIntArg2?min:IntArg2;System.out.println(max=+max);System.out.println(min=+min);3.求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。答:public class Supublic static void main(String args)int n,i,k=0,y;for(n=2;n=100;n+)y=1;for(i=2;in;i+)if(n%i=0)y=0;break;if(y=1)k+;System.out.print(n+ );if(k%5=0)System.out.print(n);4.使用java.lang.Math类,生成100个0-99之间的随机整数,找出他们之中的最大值和最小值,并统计大于50的整数个数。public class Random public static void main(String args) int MinNum,MaxNum,n=0; int array=new int100; array0=(int)(Math.random()*100); MinNum=array0; MaxNum=array0; System.out.println(数列为:); System.out.print(array0+ ); for(int i=0;i50) n+; if(arrayi=MaxNum) MaxNum=arrayi; if(arrayi=MinNum) MinNum=arrayi; System.out.print(arrayi+ ); System.out.println(); System.out.println(MinNum=+MinNum); System.out.println(MaxNum=+MaxNum); System.out.println(大于50的整数个数有:+n);5.接收用户从键盘上输入的两个整数,求两个数的最大公约数和最小公倍数,并输出。public class Test2 public static void main(String args) int I = new intargs.length; for(int i=0;iargs.length;i+) Ii = Integer.parseInt(argsi); int m,n,temp,t; if(I0x.getscoreOfsum()System.out.println(this.getname()+总分大于+x.getname();if(this.getscoreOfsum()x.getscoreOfsum()System.out.println(this.getname()+总分小于+x.getname();else System.out.println(this.getname()+总分等于+x.getname();/equals方法/比较2学生学号是否相等(还没完善)/* * public boolean equals(Object x)if(this.getClass()!=x.getClass()return false;Student b=(Student)x;if(this.id=b.getid()return true;*/(2)声明StudentXW(学习委员)类为Student类的子类。在StudentXW类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+3)public class StudentXW extends StudentString responsibility;/构造方法public StudentXW()super();/responsibility= ;public StudentXW(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/testScore测评成绩/平均分public float testScore()return(this.scoreOfsum/3+3);/toString方法public String toString()return(学号:+this.id+n姓名:+name+n英语:+this.scoreOfenglish+n数学:+this.scoreOfmath+n计算机:+this.scoreOfcomputer+n总分:+this.scoreOfsum+n职位:+this.responsibility);(3)声明StudentBZ类为Student类的子类在StudentBZ类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+5)public class StudentBZ extends StudentString responsibility;/构造方法public StudentBZ()super();/responsibility=;public StudentBZ(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer,String aresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/testScore测评成绩/平均分public float testScore()return(this.scoreOfsum/3+5);/toString方法public String toString()return(学号:+this.id+n姓名:+name+n英语:+this.scoreOfenglish+n数学:+this.scoreOfmath+n计算机:+this.scoreOfcomputer+n总分:+this.scoreOfsum+n职位:+this.responsibility);4)声明测试类,生成若干个Student类、StudentXW类及StudentBZ类对象,并分别计算它们的评测成绩(建议采用:写一个测试函数,该函数以父类student数组作为参数) 。import java.text.*;public class test4_10public static void main(String args)Student su=new Student(001,苏轼,56.00f,87.00f,95.00f);Student du=new Student(002,杜甫,86.00f,75.00f,80.00f);Student bai=new Student(003,白居易,42.00f,77.00f,65.00f);Student liu=new Student(004,柳宗元,67.00f,67.00f,67.00f);StudentXW ou=new StudentXW(005,欧阳修,89.00f,98.00f,90.00f,数学代表);StudentXW wang=new StudentXW(006,王安石,98.00f,87.00f,36.00f,英语代表);StudentBZ li=new StudentBZ(007,李白,89.00f,87.00f,87.00f,班长);System.out.print(li);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(li.testScore();System.out.println();System.out.print(wang);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(wang.testScore();System.out.println();System.out.print(ou);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(ou.testScore();System.out.println();System.out.print(su);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(su.testScore();System.out.println();System.out.print(du);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(du.testScore();System.out.println();System.out.print(bai);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(bai.testScore();System.out.println();System.out.print(liu);System.out.println(n评测成绩:+new DecimalFormat(0.00).format(liu.testScore();运行test4_10的结果如下:(很好玩吧,李白,我让你挂科。)11.包有什么作用?如何创建包和引用包中的类?答:包是一种松散的类的组合,一般不要求处于同一包中的类型有明确的相互关系,但由于同一包中的类在默认情况下可以相互访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。利用包来管理类,可实现类的共享与复用。在操作系统中,目录用来组织文件,设置权限。只要在要用到包中类的时候,在该引用类的第一行加上:package (包的全路径)即可。第五章课后习题答案1.什么是接口?接口起什么作用?接口与抽象类有何区别?答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽

温馨提示

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

评论

0/150

提交评论