Java语言程序设计(原书第11版)复习题第九章答案

此答案仅为个人学习答案,若有错误,请不吝指出

在这里插入图片描述

9.1

类为对象定义属性和行为。

9.2

public class ClassName {
}

9.3

ClassName v;

9.4

new ClassName();

在这里插入图片描述

9.5

构造函数是使用new运算符创建对象时调用的特殊类型的方法。构造函数没有返回类型,甚至没有void。

9.6

当且仅当类中没有明确定义任何构造方法时才会自动提供它。
在这里插入图片描述

9.7

成员访问运算符(.)用于访问数据字段或从对象调用方法。

9.8

匿名对象是指没有引用它的引用变量的对象。

9.9

NullPointerException是一种常见的运行时错误,当调用值为 null 的引用变量上的方法时会发生此类异常。

9.10

数组是一个对象。数组可以包含对象类型的元素。数组元素的默认值为0表示数值,false表示布尔值,“\u0000”表示字符,null表示对象。
在这里插入图片描述

9.11

a.在第3行,new ShowErrors(5)尝试使用构造函数ShowErrors(int)创建实例,但是ShowErrors类没有这样的构造函数。
b.在第4行,调用了t.x(),但ShowRors类没有名为x()的方法。
c.在第5行 c.getRadius 在第3行只是声明了c是Circle的对象,而并没有创建c为Circle类型的对象,即第5行的调用c是为空。
d.new C(5.0)与类C中的任何构造函数都不匹配。程序会编译错误,因为类C没有带参数的构造函数。

在这里插入图片描述在这里插入图片描述

9.12

程序没有编译,因为在第3行中使用了new A(),但是类A没有默认的构造函数。

在这里插入图片描述

9.13

false
在这里插入图片描述

9.14

使用日期的无参数构造函数
java.util.Date date = new java.util.Date();
使用data.toString()方法。

9.15

可以使用其构造函数Point2D(x,y)为(x,y)处的点创建Point2D对象。使用p1.distance(p2)获取p1和p2之间的距离。使用p1.midopint(p2)获得p1和p2之间的中点。

9.16

Date 在 java.util 包中.
Random 在 java.util 包中.
Point2D 在 javafx.geometry 包中.
System 和 Math 在 java.lang 包中.

在这里插入图片描述

9.17

System.out.println(f.i);
正确
System.out.println(f.s);
正确
f.imethod();
正确
f.smethod();
正确
System.out.println(F.i);
错误
System.out.println(F.s);
正确
F.imethod();
错误
F.smethod();
正确
在这里插入图片描述

9.18

在main方法和factorial方法中添加static,因为这两个方法不需要引用任何实例对象或调用Test类中的任何实例方法。
在这里插入图片描述

9.19

不能从静态方法中调用实例方法或引用一个实例变量
能从实例方法中调用静态方法或引用 一个静态变量
第11行中 c.getRadius
c是一个实例变量,不能从method2中的静态上下文访问它。
在第3行中 method1()
静态主方法中不能直接调用实例方法method1

在这里插入图片描述

9.20

访问器方法用于检索私有数据值,修改器方法用于更改私有数据值。
访问器方法的命名约定是非布尔值的getDataFieldName()和布尔值的isDataFieldName()。
修改器方法的命名约定是setDataFieldName(value)。

9.21

有两个优点:(1)保护数据;(2)易于维护类。

在这里插入图片描述在这里插入图片描述

9.22

没问题。虽然radius是私有的,但是myCircle.radius是在Circle类中使用。

在这里插入图片描述

9.23

Java使用“传递值”将参数传递给方法。向方法传递基本类型的变量时,该变量在方法完成后保持不变。但是,将引用类型的变量传递给方法时,对方法内变量引用的对象所做的任何更改都是对方法外变量引用的对象的永久更改。实际参数和形式参数变量都引用同一个对象。
程序输出如下:
count is 101
times is 0
在这里插入图片描述

9.24

After swap1: circle1 = 1.0 circle2 = 2.0
After swap2: circle1 = 2.0 circle2 = 1.0
在这里插入图片描述在这里插入图片描述

9.25

a. a[0] = 1 a[1] = 2
b. a[0] = 2 a[1] = 1
c. e1 = 2 e2 = 1
d. t1’s i = 2 t1’s j = 1
t2’s i = 2 t2’s j = 1

在这里插入图片描述

9.26

(a) null
(b) 1234567
© 7654321
(d) 1234567

在这里插入图片描述

9.27

第4行打印空值,因为dates[0]为空。因为第5行从空引用调用toString()方法,所以它会导致一个NullPointerException异常。

在这里插入图片描述

9.28

不一定,还需要看有没有返回一个指向可变数据域的引用的访问器方法。有则可以改变,没有则不可改变。

9.29

是的

在这里插入图片描述

9.30

可以,因为值是引用类型的

在这里插入图片描述

9.31

i + j is 23
k is 2
j is 0

在这里插入图片描述

9.32

引用对象自身

在这里插入图片描述在这里插入图片描述

9.33

第5行和第6行应交换
第10,14行应该是this.p

在这里插入图片描述

9.34

test.id 是错误的,因为id是实例成员,不能直接从类中访问

  • 13
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值