当前位置:文档之家› JAVA实用教程(第三版)课后习题答案

JAVA实用教程(第三版)课后习题答案

第一章Java语言概述2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?答:不正确3.java应用程序的主类必须含有怎样的方法?答:含有main方法4。

“java应用程序必须有一个类是public类”这句话正确吗?答;不正确,只能有一个public类5。

“java Applet程序的主类必须是public类”这句话正确吗?答:正确,因为java Applet主类必须是Applet类的子类并且是public 的类6。

请叙述java源程序的命名规则。

答:与public的类同名。

7。

源文件生成的字节码文件在运行时都加载到内存中吗?答:非也,动态随需要运行才加载。

8.面向对象的程序设计语言有那些基本特征?答:封装;继承;多态性。

9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类第二章基本数据类型和数组4。

下列哪些语句是错的?Int x=120;Byte b=120;b=x;答:B=x;错应为b=(byte)x5。

下列哪些语句是错的?答:y=d;错,应y=(float)d6。

下列两个语句是等价的吗?Char x=97;Char x=…a‟;答:是等价的。

7。

下列system.out.printf语句输出结果是什么?Int a=97;Byte b1=(byte)128;Byte b2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2);如果输出语句改为:System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?答:输出a ,-128,127修改后输出97,-128,1278.数组是基本数据类型吗?怎样获取数组的长度?答:不是基本数据类型,是复合数据类型。

可以通过:数组名.length的方法获得数组长度9。

假设有两个int类型数组:Int[] a=new int[10];Int[] b=new int[8];b=a;A[0]=100;B[0]的值一定是100吗?答;一定,因为a数组与b数组引用相同。

10。

下列两个语句的作用等价吗?Int[] a={1,2,3,4,5,6,7,8};Int[] a=new int[8];答:不等价,前者有初值,后者指分配空间。

初值数组元素为0 11.有语句:int [] a={1,2,3},b={4,5};a=b;求a[0]=? b[1]=? 为什么?答:a[0]=4 ; b[1]=5 因为有相同的引用,同指向b[].12.Java语言使用_________编码,每个字符占___________字节________byte位Unicode 2 16第三章运算符、表达式与语句1。

下列语句输出的结果是什么?Int a=100, x,y;X=++a;Y=a--System.out.pri ntf(“%d, %d,%d”,x,y,a);答:101,101,1002。

下列语句那些有错误?Int x=0;X=5.0/2;Float y=12.5F;y=5.0/2;答:x=5.0/2; 错。

3。

下列语句那些有错?Byte x=32;Char c=…a‟;Int n=c-x;c=c-x;答:c=c-x;错应为int类型。

4下列语句正确的是A.表达式“12+56>34”的值是trueB.表达式“12+56||34”是非法表达式C.表达式“x+y=12”是非法表达式D.表达式“12+56>34”的值是13答:(A, C )5。

对于整数m,m<<1的结果一定是2m吗?答:不一定,高位有损失时,不是2m6.对于两个int整形变量Int m=120, n=240;那么m^m=?;m^n^n=?答:m^m=0; m^n^n=1207.下列System.out.printf语句输出的结果是什么?Int x=10, y=10, z=10;If(x>9){y=100;z=200;}Elsey=-100;z=-200;System.out.printf(“%d,%d,%d”,x,y,z);输出:10,100,-2008.下列for语句输出结果是什么?For(int i=1; i<=4; i++){Switch(i){Case 1: System.out.printf(“%c”,‟a‟);Case 2: System.out.printf(“%c”,‟b‟);Break;Case 3: System.out.printf(“%c”,‟c‟);Case 4: System.out.prin tf(“%c”,‟d‟);Break;}}输出:a,b, b,c,d,d9. 下列System.out.printf语句输出的结果是什么?Char a[]={…a‟,‟b‟,‟c‟,‟d‟,‟e‟};For(i=0; i<=a.length/2; i++){char c=a[i];a[i]=a[a.length-(i+1)];a [a.length-(i+1)]=c;}System.out.printf(“%c%c%c%c%c”a[0],a[1],a[2],a[3],a[4]); 输出:e,d,c,b,a10.下列System.out.printf语句输出的结果是什么?int a[]={3,4,1,2,-6};for(int i=0; i<a.length;i++){for(int j=i+1;j<a.length;j++){if(a[j]<a[i]){Int n=a[j]; a[j]=a[i]; a[i]=n;} } } System.out.printf(“%d,%d,%d,%d,%d”,a[0],a[1],a[2],a[3],a[4]);输出:-6,1,2,3,411.public class Tick{public static void main(String args[]){int a[]={3,4,1,2,-6};for(int i=0; i<a.length;i++){for(int j=i+1;j<a.length;j++){if(a[j]<a[i]){int n=a[j]; a[j]=a[i]; a[i]=n;} } } System.out.printf("%d,%d,%d,%d,%d",a[0],a[1],a[2],a[3],a[4]);}}第四章类与对象1.在声明类时,类名应遵循哪些习惯?答:首字母大写,望名知意2.类体内容有哪两种重要成员?答:成员变量,和成员方法。

3。

实例方法可以操作类变量吗?类方法可以操作实例变量吗?答:实例方法可以操作类变量。

而类方法不可以操作实例变量。

4.当类的字节码加载到内存时,类变量就一定分配了内存空间吗?答:实例成员变量不分配内存,而类变量一定分配内存。

5.类的实例变量在什么时候分配内存?答:声明之后,在用new关键字创建实例的时候才分配内存。

6.一个类的类变量被该类创建的所有对象共享吗?答:共享7.不同对象的实例变量分配的内存地址一定不同吗?答:当出现引用赋值语句时两个实例变量的内存地址相同。

8.什么叫方法的重载?构造方法可以重载吗?答:方法的重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数不同,或者参数的个数不同,或者参数的类型不同。

构造方法可以重载。

9.请阐述为什么类方法不能调用实例方法?答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。

而这时在类对象创建之前,实例方法还没有入口地址。

还不知道一个方法从何处开始执行,当然不能调用。

10.请阐述,为什么类方法中不能操作实例成员变量?答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。

而这时在类创建之前,实例成员变量还没有分配内存空间。

没内存空间当然无法操作。

11.实例方法可以用类名直接调用吗?答:不能,因为实例方法,用new创佳对象后才分配入口地址,而类名,一经声明就分配类名地址。

而这时对象创建之前实例方法还没有入口地址。

实例方法表现实例的功能,或改变实例变量。

用类调用改变那个实例的实例变量,表现那个实例的功能,不明确。

12.关键字this可以出现在构造方法中吗?可以出现在实例方法中吗?可以出现在类方法中吗?答:可以出现在构造方法中,代表该类构造方法所创造出的对象。

可以出现在实例方法中,代表使用该方法的当前对象。

This不能出现在类方法中,因为类方法是通过类名调用的。

13.源文件声明编写的类一定在同一个包中吗?答:不一定,当不在同一包中时,可用import语句将其所在的包引入该源文件中。

14.“import java.awt.*”与“import java.awt.Button”有什么不同?答:前者引入了awt包中的所有类,后者只引入了Button一个类。

15.程序中使用了“import java.util.*;”程序运行时,是要加载java.util 包中的全部类到内存吗?答:不,只加载本程序用到的类到内存中,因为java程序是动态加载,字节码类文件。

16.有哪几种访问权限修饰符?说出一种的作用。

答:访问权限修饰符有public, private,protected.Private作用是只允许本类的对象访问。

17.怎样反编译一个类?答:使用SDK提供的反编译器javap.exe文件可以实现将字节码文件反编译为源码文件。

可查看源码中public方法和public成员变量的名字。

如加入参数-private则可列出其全部的成员方法和成员变量。

如:Javap –private java.awt.Button则可以列出Button类中全部的方法和成员变量。

18.下面程序中那个语句是错的?class A{private float weight; //weight被修饰为private的float型变量。

public float f(float a,float b) //方法f是public方法。

{ return a; } }public class B{void g(){A a=new A();a.weight=23f;a.f(3,4);} }答:a.weight=23f;错1.编写一个类,该类创建的对象可以计算等差数列的和。

解:class DengCha{int start,d;DengCha(){}DengCha(int start,int d){this.start=start;this.d=d;}void setStart(int s){start=s;}void setD(int d){this.d=d;}int getSum(int n){int sum=0,i=1;while(i<=n){sum=sum+start;start=start+d;i++;}return sum;}}public class ZuoYe04_1{public static void main (String args[ ]){DengCha shulie=new DengCha(2,3);System.out.println(shulie.getSum(100));shulie.setStart(10);shulie.setD(5);System.out.println(shulie.getSum(9));DengCha arithmetical=new DengCha();Scanner Reader=new Scanner(System.in);System.out.println("请输入等差数列开始值");arithmetical.start=Reader.nextInt();System.out.println("请输入等差数列的差值");arithmetical.d=Reader.nextInt();System.out.println("请输入等差数列求和的个数");int n=Reader.nextInt();System.out.println(n+"个数的和是"+arithmetical.getSum(n));}}3.编写一个类,该类封装了一元二次方程的属性和功能,即该类有刻画方程系数的3个成员变量和求根的方法。

相关主题