Java习题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java程序设计习题解析本习题解析是《Java语言程序设计》(清华大学出版社2010.9,沈泽刚主编)一书各章习题的全部答案。如果有答案不正确或有疑问,可联系作者。电话:13050451166电子邮件:shenzegang@tom.com第1章习题解答1.答:程序设计语言可分为机器语言、汇编语言、高级语言。机器语言的每条指令都是一串二进制代码,完全依赖于硬件系统,不同的机器有着不同的指令系统,指令难以记忆,程序难以阅读。汇编语言用助记符表示计算机指令,程序要经过汇编程序翻译成机器语言才能运行。优点是编写程序比用机器语言节省时间,发生的错误少,比机器语言容易修改。缺点是面向机器。高级语言程序几乎不用修改就可以用在不同型号的计算机上,比汇编语言容易学习,编程用的时间少、程序容易维护等。2.答:面向过程是一种以过程为中心的编程方法,就是分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向对象的方法是以对象为中心的编程方法,它的基本思想是将要构造的软件系统表示为对象集合,其中每个对象是一组数据和对数据的操作组成的封装体,对象之间的联系通过消息传递实现。3.答:Java语言的特点:简单的、面向对象的、分布式的、解释型的、平台独立的、可移植的、健壮的、安全的、高性能的、多线程的、动态的。4.答:开发Java程序通常分3步:(1)编辑源程序;(2)编译源程序;(3)执行程序。5.答:JDK的编译命令是javac.exe,命令格式:javacWelcome.java。如果编译结果报告找不到文件,可能是类名拼写错误或路径错误。6.答:可获得字节码文件,文件扩展名为.class。如果一个Java文件中定义了多个类,包括外部类、内部类、匿名内部类,每一个类都会生成对应的字节码文件。7.答:使用Java解释器,即java.exe,命令格式:javaWelcome(无扩展名)。8.答:(1)该程序缺少main()方法。输出语句不能直接写在类体中。(2)语句缺少分号。(3)缺少类的定义。Java程序设计习题解析2(4)Main()方法不能作为程序执行的入口点,应该定义main()方法。9.答:保存为ClassTwo.java文件。Java源程序文件的扩展名是.java,Java字节码文件的扩展名是.class。10.参考程序:publicclassShowStars{publicstaticvoidmain(Stringargs[]){for(inti=9;i0;i=i-2){for(intj=i;j0;j--)System.out.print(*);System.out.println();//换行}}}11.答:编译型语言写的程序执行前需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的时候就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。解释型语言专门有一个解释器能够直接执行程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。Java程序是半编译半解释型的。Java程序首先被编译成一种称为字节码的中间代码,这种中间代码只有在Java虚拟机上才能运行,运行时是解释执行的。12.答:Java平台是在Windows、Linux等系统平台上的程序运行平台,主要由Java虚拟机(JavaVM)和Java应用程序接口(JavaAPI)两部分组成。Java虚拟机是在一台真正的机器上用软件方式实现的一台假想机。Java虚拟机是运行Java程序必不可少的环境。编译后的Java程序指令由JVM执行。JVM的具体实现包括:指令集(等价于CPU的指令集)、寄存器组、类文件格式、栈、垃圾收集堆、内存区。13.答:JVM使用的代码存储在.class文件中。JVM的部分指令很像真正的CPU指令,包括算术运算、流控制和数组元素访问等。Java虚拟机规范提供了编译所有Java代码的硬件平台。因为编译是针对假想机的,所以该规范能让Java程序独立于平台。它适用于每个具体的硬件平台,以保证为JVM编译的代码的运行。JVM不但可以用软件实现,而且可以用硬件实现。第2章习题解答1.答:标识符必须以字符、下划线(_)或美元符($)开头,其后可以是字符、下划线、美元符或数字,长度没有限制。错误的标识符:③以数字开头④不允许使用连字符“-”2.答:Java共有8种基本数据类型。字节型、短整型、整型、长整型、单浮点型、双浮点型、布尔类型、字符类型。int型数据的最大值是-231,最小值是231-1。Java程序设计习题解析3Java中常用的引用数据类型有数组、类、接口、枚举类型四种。3.答:常量是在程序运行过程中,其值不能被改变的量。变量是在程序运行中其值可以改变的量。Java语言的字符型常量是用单引号将字符括起来单个字符;字符串常量是用双引号括起来的一个或多个字符组成,字符串不是Java的基本数据类型,属于引用类型。4.答:Java语言使用统一码(Unicode)为字符编码,它是由UnicodeConsortium建立的一种编码方案。Unicode字符集是用两个字节(16位)的无符号整数为字符编码,可表示65536个字符。它可以表示各国的语言符号,包括希腊语、阿拉伯语、日语以及汉语等。5.答:算术运算符有加(+)、减(-)、乘(*)、除(/)和取余数(%)5个二元运算符和正(+)、负(-)、自增(++)、自减(--)4个一元运算符。关系运算符有大于()、小于()、大于等于(=)、小于等于(=)、等于(==)、不等于(!=)6个。逻辑运算符包括以下几种:逻辑非(!)、短路与(&&)、短路或(||)、逻辑与(&)、逻辑或(|)、逻辑异或(^)。位逻辑运算符包括按位取反(~)、按位与(&)、按位或(|)和按位异或(^)4种。移位运算符包括左移()、右移()和无符号右移()3种。赋值运算符主要有两类,一类是使用等号(=)赋值,它把一个表达式的值赋给一个变量或对象;另一类是扩展的赋值运算符,如+=。6.答:自动类型转换也称加宽转换,它是指将具有较少位数的数据类型转换为具有较多位数的数据类型。例如:byteb=64;inti=b;//字节型数据b自动转换为整型强制类型转换是将位数较多的数据类型转换为位数较少的数据类型,如将double型数据转换为byte型数据。其语法是在圆括号中给出要转换的目标类型,随后是待转换的表达式。例如:byteb=5;doubled=333.567;b=(byte)d;//将double型值强制转换成byte型值7.答:尽管Java语言提供了goto保留字,但不能使用,即不能实现控制的无条件转移。在Java程序中可以使用带标签的continue和break语句实现将控制转移到指定的标签。但需要事先定义标签。标签一般在循环的开始定义。8.答:先创建一个java.util.Scanner类的对象,然后调用其nextInt()方法、nextDouble()方法和nextLine()方法就可以实现从键盘上输入整数、浮点数和字符串。9.答:A,B,C,D10.答:B,D11.答:C12.答:D13.答:A,D,F14.答:A,DJava程序设计习题解析415.答:去掉unsigned,将b=b-1改为b=(byte)(b-1)16.答:byteb=24shorts=128inti=1111longl=286331153charc=Afloatf=0.333doubled=1.001E-5booleanbool=true17.答:C,D18.答:C19.答:C20.答:521.答:①3②true③true22.答:i=2,j=223.答:D24.答:A,B,F25.答:A26.答:if(x=y)改为if(x==y),while(y--)改为while(y--0)27.答:D28.答:break;j==I29.答:B30.参考程序如下:importjava.util.Scanner;publicclassTemperature{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print(请输入华氏温度:);doublehtemp=sc.nextDouble();doublectemp=(5.0/9)*(htemp–32);System.out.printf(摄氏温度为:%8.2f,ctemp);}}31.参考程序如下:importjava.util.Scanner;publicclassCylinderDemo{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print(请输入圆柱底面半径:);doubleradius=sc.nextDouble();System.out.print(请输入圆柱高:);doubleheight=sc.nextDouble();System.out.printf(圆柱的体积:%8.2f,Math.PI*radius*radius*height);}}32.参考程序如下:importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Java程序设计习题解析5System.out.print(请输入一个浮点数:);Scannersc=newScanner(System.in);doubled=sc.nextDouble();System.out.println(整数部分:+(int)d);System.out.println(小数部分:+(d–(int)d);}}33.参考程序如下:importjava.util.Scanner;publicclassNumCompare{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print(请输入第一个整数:);intnum1=sc.nextInt();System.out.print(请输入第二个整数:);intnum2=sc.nextInt();System.out.print(请输入第三个整数:);intnum3=sc.nextInt();intmax,min,mid;if(num1num2){if(num1num3){max=num1;if(num2num3){mid=num2;min=num3;}else{mid=num3;min=num2;}}else{max=num3;mid=num1;min=num2;}}else{if(num2num3){max=num2;if(num1num3){mid=num1;min=num3;}else{mid=num3;min=num1;}}else{max=num3;mid=num2;min=num1;Java程序设计习题解析6}}System.out.println(min=+min);System.out.println(mid=+mid);System.out.println(max=+max);}}34.参考程序如下:importjava.util.Scanner;publicclassTenNum{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print(请输入第1个整数:);intmax=sc.nextInt();intmin=max;for(inti=2;i=10;i++){System.out.print(请输入第+i+个整数:);intnum=s

1 / 73
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功