




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java语言程序设计第2版(郑莉)第二章习题答案1.什么是对象、类,它们之间的联系?答: 1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象 =数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。2.什么是面向对象的程序设计方法?它有那些基本特征?答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个
2、数据集合,数据相对于功能而言,具有更强的稳定性。它的特征:抽象,封装,继承,多态。3(无用)4请解释类属性、实例属性及其区别。答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。5请解释类方法、实例属性及其区别。答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。类方法也称为静态方法,在方法声明时前面需加static 修饰符,类方法表示具体实例中类对象的共有行为。区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量
3、和实例方法;6类的访问控制符有哪几种?具体含义及其区别。答:类的访问控制符只有public (公共类)及无修饰符(默认类)两种。区别:当使用public 修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。7 类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限制的作用?答 :类成员的访问控制符有public,private,protecte 及无修饰符.public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问 (前提是对累成员所在的类访问有访问权限).Private(保护的):类中限定为private的成员
4、只能被这个类本身访问,在类外不可见。proteced (保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。无修饰符(默认的): public, private, protected 这个三个限定符不是必须写的。如果不写,则表明是“friendly",相应的成分可以被所在保重的各类访问。8 简述构造方法的特点?答:构造方法主要有以下特点:( 1) 构 造方法的方法名与类名相同;( 2) 构造方法没有返回类型(修饰符void 也不能有);( 3) 构造方法通常被声明为公有的(public);( 4) 构 造方法可以有任意多个参数;( 5) 构 造方法的主要作用
5、是完成对象的初始化工作;( 6) 构 造方法不能在程序中显式的调用;( 7) 在 生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。9 如果在类声明中声明了构造方法,系统是否还提供默认的构造方法?答:用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。10:声明Patient类表示在门诊室中的病人。此类对象应包括n ame (a st ring)sex (a char)、age(an integerb weight(a float。、allergies(a
6、 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:”
7、+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
8、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()r
9、eturn 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:Syst
10、em.out.println("sex:System.out.println("age:System.out.println("weight:System.out.println("allergies: "+april.getname();"+april.getsex();"+april.getage();+april.getweight();+april.getallergies();Mici*ooo4-1 _WindowsXlL* 爪±J<C> 欣叔所后 1985-2001Gs >J>o
11、cunicn9 andliunrsMlclniloisrv«coi*><1 ;-xJaiuat>JsiMaic Faitr ±日 n * _ J aiv aLJKcrnnc =erx =二Zliioin qrJL ±f 11:声明并测试一个复数类,其方法包括toString ()及复数的加、减、乘运算答:public class Complexprivate float a;private float b;public String toString()if(a!=0)return(a+"i"+"+"+b)
12、;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(
13、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");I): xiavaJjAUftc Conplcx JavaP: java>jAuac ConplexTex
14、teriJauaI) . jat*a>Jau a Co mpl&xText 01* 7.0i+12,05.01*8.0k (9.01+32.012:什么是UML?它由哪几部分组成?答:UML是图形化()即可视化的建模语言,成为面向对象建模的标准语言 它由四部分组成:(1)视图(2)图(3)模型元素(4)通用机制 13.常用的类与类之间的关系有哪几种。答:有关联、依赖、流、泛化、实现、使用。14.考虑学院、系及教员应该具有哪些属性,并画出它们之间关系的类图。第三章课后习 题答案1 .设N为自然数:n!=-2*3 * .:?称为n的阶乘,并且规定0! =1:试编程计算2!,4!,6!
15、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!=1'n");elses=1;for(i=1;i<=n;i+)s=s*i;System:out:println(n+”!="+s+"'n");rtli&r->E«aiFC Windows I* t 版本 5:1.哲6占咐_
16、1<c> 版杈所, ivhii> gi4Mi ni<!ntfe9Urt c<a,a.C! = "XJJoic<nrni<?n fcs End 翌日七匕 i.门日右 1s>4lEi_r¥ i后七 r>n七0 1">日 士,i av«ll> = 7mm,,袅ve Mu 1. Jau mO' = 'sJ.EfcRai.Z!L> J.aV-BL Hlu 1 rt*lJ*: - 2 _ Hf "NT H£. T«9XM_ld» f =4B
17、S0.H1 FIT -Sfi5SKWf1f1.inip 17jcv<« >2 .编写程序,接收用户从键键盘上输入的三个整数x,y,z.从中选出最大和最小者,并编程实现。答:public class Mathpublic static void main(String args口)int口 IntArg = new intargs.length;for(int i=0;i<args.length;i+)IntArgi = Integer.parseInt(argsi);int max,min;max=IntArg0>IntArg1?IntArg0:IntArg1
18、;max=max>IntArg2?max:IntArg2;min=IntArg0<IntArg1?IntArg0:IntArg1;min=min<IntArg2?min:IntArg2;System.out.println("max="+max);System.out.println("min="+min);P: javA>jauac Math.Java1): jauai>jaua Math 46 16 78 rnax=78 nin =16D: jaua>_3 .求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出
19、来答: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;i<n;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 Rand
20、ompublic 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;i<100;i+) arrayi=(int)(Math.random()*100);if(arrayi>50) n+;if(a
21、rrayi>=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);E C: kVINDOTSsysteK32mL exeD:、我
22、的文档,桌面Rendon.JauaD.、我口勺文档、泉33金"小<*"<* Rdiidum卿利羯3» 96 85 52 ?3 37 8日 % 71 44 S2 « 1 8G 45 5购 81 26 2 16 45 3fi 623 232587544 St 26 37 34 的 11 If 308 5 64 60 15 61 19 E& 463a 547533381 97 16 11 90 35 37 13 3121 79 98 65 £0 55 ?5 66624 2g54口g27 42 E 睡 71 7fc 7ft t9 7
23、97 m EQ £1 SHinHun=1ltaxNLm=98人丁切的整数个数有:52并输5 .接收用户从键盘上输入的两个整数,求两个数的最大公约数和最小公倍数,出。public class Test2public static void main(String口 args)int I = new intargs.length;for(int i=0;i<args.length;i+)Ii = Integer.parseInt(argsi);int m,n,temp,t;if(I0<I1)temp=I0;I=I1;I1=temp;m=I0;n=I1;t=m%n;while(
24、t!=0) m=t;n=m;t=m%n;System.out.println("两个数的最大公约数为:"+n);System.out.println("两个数的最小公倍数为:"+I0*I1/n);ca C : VTllTDOTSVsy,st e*32'c:Md. exe:、我的文档面Wav3>ja.va_G IestS. java八我的文档,桌面短TestZ 6 8勺个数的最大公约数为:26个致的纂小公倍数为:24:'我的文档"臬面3冽鼻>6.从键盘上输入一件物品的价格(范围在0.105.00 元.),假设用户支付了
25、一 张5元纸币,请列出一种找零的方案,使得纸币及硬币的个数最少。如 3.68元, 应为两元一张、一元一张、五角一个、一角一个、五分一个、二分一个、一分一 个。/ Price 类import java.io.*;public class Pricepublic static void main(String args口)System. out .println( "enter a number(0.01-5.00):");float a=Keyboard. getFloat ();int c=( int )(a*100);int b=500-c;System. out .pr
26、intln( "找零如下:”);if (b/200!=0)System. out .println(b/200+ ”张2 元 ");b-=(b/200)*200;if (b/100!=0)System. out .println(b/100+ ”张1 元 ");b-=(b/100)*100;if (b/50!=0)System. ");b-=(b/50)*50; if (b/20!=0)System. if (b/10!=0)System. if (b/5!=0)System. if (b/2!=0)System.if (b!=0)System. / K
27、eyboard 类out .println(b/50+out .println(b/20+out .println(b/10+out .println(b/5+out .println(b/2+out .println(b+ 1"张5角"张2角”);b-=(b/20)*20;"张1 角”)力-=(b/10)*10;"个 5分");b-=(b/5)*5;"个 2分");b-=(b/2)*2;个1分");import java.io.*;public class Keyboard static BufferedRead
28、er InputStreamReader(System.inputStreamin );=new BufferedReader(newpublicstatic tryint getInteger()return (Integer.valueOf (inputstreamalue();catch (Exception e)e.printStackTrace();.readLine().trim().intVpublic static trypublic staticString s= "' try return 0;String getString() return (inpu
29、tStream .readLine(); catch (IOException e)return "0"float getFloat() ;BufferedReader in =new BufferedReader(newInputStreamReader(System. in );s=in.readLine();return (Float. parseFloat (s);catch (IOException e)System. out .println( "输入非法!”); return (0.0f);运行结果::* Problems " Javado
30、c 俄.DecUration StermmatedPrice Uawd Applkation Z>ProgiGenter a nmnbex(0.01-5.。0:L3 *找等如下,iSizi工张遍 i张i角 工个2分7 .什么是异常?解释抛出、捕获的含义。答:异常又称为例外,是特殊的运行错误对象,在程序中可以强制编译器来处理 程序运行中的发生的并非由程序本身所造成的错误;抛出异常:把生成异常对象并提交的过程称为抛出异常;抛出异常是java中一个程序处理动作,检查异常时要么在方法中声明一个异常抛 出,用try-catch语句捕获异常,并进行处理。8 .简述Java的异常处理机制。答: jav
31、a 中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当java 程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。9 . 系统定义的异常与用户自定义的异常有何不同?如何使用这两类异常?答:系统定义的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。用户定义的是自己觉得可能会出现问题时,需要处理的。这样避免程序中断或是出
32、现未知错误。系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时异常编译可以通过,但是运行时才显露出来。10 . 用户如何自定义异常?编程实现一个用户自定义异常。( 1)定义mytestimport java.io.*;public class mytestprivate static int quotient(int number,int denominator)throwsDivideByZeroExceptionif(denominator=0)throw new DivideByZeroException();return
33、(number/denominator);public static void main(String args)int number1=0,number2=0, result=0;trySystem.out.println(" 输入第一个数字:");number1=Integer.valueOf(Keyboard.getString().intValue();System.out.println(" 输入第二个数字:");number2=Integer.valueOf(Keyboard.getString().intValue();result=quo
34、tient(number1,number2);catch(NumberFormatException e)System.out.println(e.toString();System.exit(-1);System.out.println(number1+"/"+number2+"="+result);( 2)定义DivideByZeroExceptionpublic class DivideByZeroException extends ArithmeticExceptionpublic DivideByZeroException()super(&qu
35、ot; 除数不能为0!");( 3)定义Keyboardimport java.io.*;public class Keyboardstatic BufferedReader inputStream=new BufferedReader(new InputStreamReader(System.in);public static int getInteger()tryreturn (Integer.valueOf(inputStream.readLine().trim().intValue();catch(Exception e)e.printStackTrace();return
36、0;public static String getString()tryreturn(inputStream.readLine();catch(IOException e)return "0"D:java es t输人第一个数字13人第二个数字i aException in t hre ad "nit in'* ftiu i de ByZera Except ion = 除数",苜3 为5, at mutest.quotlentCnytest.jaua:6> at mytestnnain<nytest,Dm 覆ua3第四章课后习题答
37、案1 .子类将继承父类所有的属性和方法吗?为什么?答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。2 .方法的覆盖与方法的重载有何不同?答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在 名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方 法。3 .声明两个带有无参构造方法的两个类 A和B,声明A的子类C,并且声明B为C 的一个成员,不声明C的构造方法。编写测试代码,生成类 C的实例对象,并观 察结果。/A类public class A public A () System.out.println ("输出
38、 A类)/B类public class B public B () System.out.println ("输出 B 类)/C类public class C extends A B b = new B ();/测试类public class test4_3 public static void main (String args口) C c = new C();运行结果:1- r. JiE_ Problenns 施 Javadocterminated > test4 2 Java输出工竟输出R类4 .声明一个基类A,它只有一种非默认构造方法;声明 A的子类B, B具有默认方 法及非默认方法,并在B的构造方法中调用基类A的构造方法。/A类public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年贵州省铜仁地区江口县数学三年级第一学期期末教学质量检测模拟试题含解析
- 公共关系学舆情引导试题及答案
- 知名企业家课件
- 行政管理与公共关系的职业路径研究题及答案
- 信息技术行业技术研发工作证明(5篇)
- 《中国古代文学鉴赏:古代文学鉴赏教程》
- 市场渠道分销授权协议签署书
- 眼睛近视的课件
- 公寓产权交易协议
- 工程项目组织结构设计与实施试题及答案
- 精装房营销策略研究-全面剖析
- 融资融券基本管理制度
- 公路工程质量试题及答案
- 中央贸促会面试题及答案
- 产业链购销合同
- 昇腾DeepSeek解决方案
- 脂肪肝介绍课件
- 出口美国合同范本
- 2025-2030中国香紫苏醇市场发展形势及未来投资风险预警研究报告
- 2024年市场营销师品牌宣传技巧试题及答案
- 教育机构与旅行社合作合同新规定
评论
0/150
提交评论