Java2实用教程(第三版)课后答案-清华大学出版社 耿祥义主编 下载本文

内容发布更新时间 : 2024/5/10 22:05:09星期一 下面是文章的全部内容请认真阅读。

{ int i=1; int fact; double sum=0; do { fact=1; int j=0; while(++j<=i) fact*=j; sum+=1.0/fact; }

while(++i<=20);

System.out.println(sum); } }

6. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数。 答:

class Wanshu {

public static void main(String args[]) {

int x,i,sum;

for(x=1;x<=1000;x++) {

sum=0;

for(i=1;i

if(x%i==0) sum+=i; }

if(x==sum)

System.out.println(x+\是完数\} } }

7. 编写应用程序,分别使用while和for循环计算8+88+888+?前10项之和。 答: ①for循环 class TheSum {

public static void main(String args[]) {

long sum=0,data=8; for(int i=1;i<=10;i++)

{

sum=sum+data; data=data*10+8; }

System.out.println(sum); } }

②while循环 class TheSum {

public static void main(String args[]) {

long sum=0,data=8,i=0; while(++i<=10) {

sum=sum+data; data=data*10+8; }

System.out.println(sum); } }

8. 编写应用程序,输出满足1+2+3+?+n<8888的最大正整数n。 答: class Maxn { {

int k=1,sum=0; while((sum+=k)<8888) k++; k--;

System.out.println(\最大能取到:\} }

public static void main(String args[])

第4章 类、对象和接口

1. 类中的实例变量在什么时候会被分配内存空间?

答: 当该类创建对象之后,实例变量才会被分配相应的内存空间。 2. 什么叫方法的重载?构造方法可以重载吗?

答:①一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同(方法的重载体现了多态性,即功能多态性)。 ②构造方法可以重载。

3. 类中的实例方法可以操作类变量(static变量)吗?类方法(static方法)可以操作实例变量吗? 答:①类中的实例方法可以操作类变量。

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

4. 类中的实例方法可以用类名直接调用吗? 答: 类中的实例方法不可以用类名直接调用。 5. 举例说明protected方法和友好方法的区别。

答: 当子类与父类不在同一个包中时,子类可以继承父类的protected方法;而友好方法此时则不能被子类继承。

6. 举例说明类变量和实例变量的区别。

答:⑴书写: 定义成员变量时,类变量有static修饰;实例变量没有static修饰。 例: class A {

int x; //实例变量 static int y; //类变量 }

⑵内存: 不创建对象,类的实例变量不会被分配内存空间;类变量被分配相应的内存空间。 不同对象的实例变量被分配不同的内存空间;不同对象的类变量被分配相同的内存空间。 任何一个对象改变类变量,其他对象的相应类变量也发生相应变化。 一个对象的实例变量发生改变,不影响其他对象的相应实例变量。 例: 执行语句: A1.x=10; A1.y=20;

这时A2.x的值也是10;而A2.y的值保持原来的初值。

⑶使用: 类变量可以被类方法操作;而实例变量不能被类方法操作。 例: class A { int x; static int y; static void func() {

b=10; //合法 a=20; //非法 } }

类变量可以通过类名访问;实例变量不能通过类名访问。 例: class A { int x; static int y; } class B {

public void func(); {

A.x=10; //非法

A.y=20; //合法 } }

7. 子类将继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?

答:①子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与 父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。

②子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。

③在子类中允许有一个方法和父类的方法名字相同而类型不同。 8. 父类的final方法可以被子类重写吗? 答: 父类的final方法不能被子类重写。 9. 什么类中可以有abstract方法? 答: abstract类中可以有abstract方法。 10.什么叫对象的上转型对象?

答: B类是A类的子类或间接子类,当用子类B创建一个对象b并把这个对象的引用放到A类的对象a中时,称A类对象a是子类对象b的上转型对象。 11.什么叫接口的回调?

答: 可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。 12.下列程序有什么错误? public class Takecare

{ int a=90;

static float b=10.98f;

public static void main(String args[]) {

float c=a+b;

System.out.println(\} }

答: 语句float c=a+b;错误。原因是类方法main操作了实例变量a。 13. 请写出下列程序的输出结果。 class A {

public int f(int x) {

return x+1; } }

class B extends A

{

public int f(int x) {

return x*x; } }

public class E {

public static void main(String args[]) {

A a=new B(); int m=a.f(10);

System.out.println(m); } } 答: 100

14. 请写出下列程序的输出结果。 class A { int x;

public void setX(int x) { this.x=x; }

int getX()

{ return x; } } class B {

public void f(A a) {

a.setX(100); } }

public class E {

public static void main(String args[]) {

A a=new A();