9.3.1答案:类为对象定义属性和行为,而对象从类中创建
9.3.2答案:
public class ClassName {
}
9.3.3答案:ClassName objectRefVar;
9.3.4答案:new ClassName();
9.4.1答案:构造方法是一种特殊的方法。构造方法必须和所在类名字相同,构造方法没有返回值,甚至连void也没有,构造方法是在创建一个对象时由new操作符调用的,构造方法的作用是初始化对象
9.4.2答案:当且仅当类中没有明确定义任何构造方法时才会自动提供默认构造方法
9.5.1答案:操作符(.)用于访问对象的数据域或者调用对象的方法
9.5.2答案:匿名对象是指对象在创建后并不需要引用的对象。是指可以创建一个对象,而并不将它明确地赋予一个变量
9.5.3答案:NullPointException是一种常见的运行时错误,当调用值为null的引用变量上的方法时会发生此类异常。再通过引用变量调用一个方法之前,确保先将对象引用赋值给这个变量
9.5.4答案:在java中,数组被看做对象。数组可以包含对象类型的元素。在数组中,数值类型数据域的默认值是0,boolean类型数据域的默认值是false,char类型数据域的默认值是‘\u0000’,对象元素类型数据域的默认值是nulll
9.5.5答案:
(a)第三行把ShowErrors t = new ShowErrors(5);改成ShowErrors t = new ShowErrors();
(b)x() 不是ShowErrors类中的方法
(c)程序可以编译,但运行时错误。因为在执行println语句时c的数据域没有任何引用对象,这个数据域有一个特殊的引用值null
(d)有编译错误,因为c类没有带参数的构造方法
9.5.6答案:程序有编译错误,因为在main方法中使用了新的A(),但是A类没有默认的构造方法
9.5.7答案:false
9.6.1答案:可以使用Data类中的无参构造方法为当前的日期和时间创建一个实例,他的getTime()方法返回自GMT时间1970年1月1日算起至今流逝的时间
9.6.2答案:使用它的构造函数Point2D(x,y)在(x,y)处创建Point2D对象,使用P1.distance(P2)获得p1和p2之间的距离。使用p1.midpoint(p2)获得p1和p2之间的中点。
9.6.3答案:Data和Random在java.util包中,Point2D在javafx.geometry包中,System和Math在java.lang包中
9.7.1答案:
System.out.println(f.i);
System.out.println(f.s);
f.imethod;
f.smethod;
System.out.println(F.s)
F.smethod();是正确的
9.7.2答案:void main之前和int factorIcal之前可以添加static
因为这两个方法不需要引用任何实例对象或调用Test类中任何实例方法
9.7.3答案:不可以从静态方法中调用或引用一个实例变量,可以从实例方法中调用静态方法或引用一个静态变量
下面代码错误在method2是一个静态方法,c是一个实例变量,不可以从静态方法中调用或引用一个实例变量
9.9.1答案:私有数据域不能被对象从定义该私有域的类外访问。但是经常会有客户端需要存取,修改数据域。为了访问私有数据域,可以提供一个获取(getter)方法返回数据域的值。为了更新数据域,可以提供一个设置(setter)方法给数据域设置新值。获取方法也称为访问器(accessor),而设置方法称为修改器(mutator)。访问器方法用于检索私有数据值,访问器方法用于更改私有数据值。
访问器方法的命名习惯是:非布尔型: getPropertyName();
布尔型为:isPropertyName();
修改器的命名习惯是:setPropertyName(dataType propertyValue);
9.9.2答案:防止数据被篡改,使类更易于维护
9.9.3答案:不会有问题
私有数据可以在定义它们的类中被访问
9.10.1答案:
Count is 101
times is 0
9.10.2答案:
circle1 = 1 circle2 = 2
circle1 = 2 circle2 = 1
9.10.3答案:
(a)a[0] = 1 a[1] = 2
(b)a[0] = 2 a[1] = 21
(c)e1 = 2 e2 = 1
(d)
t1’s i = 2 t1’s j = 1
t1’s i = 2 t1’s j = 1
9.10.4答案:
(a)null
(b)1234567
(c)7654321
(d)1234567
9.11.1答案:dates[0]为null,所以第五行的代码将导致NullPointerException错误,因为null调用了toString方法。当调用值为null的引用变量上的方法时会发生NullPointerException错误
9.12.1答案:如果类中仅包含私有数据域并且没有设置 set 方法,该类没有不可变,它还必须有没有返回一个指向可变数据域的引用的访问器方法
9.12.2答案:如果类中的所有数据域是私有的基本数据类型,并且类中没有包含任何设置方法,该类不会改变
9.12.3答案:可以改变
因为值是数组,数组是引用类型,所以下面的类可以改变
9.13.1答案:
i + j is 23
k is 2
j is 0
9.14.1答案:关键字this是一个对象可以用来引用自身的引用名
9.14.2答案:第四行和第五行交换,因为java要求,在构造方法中语句this(arg-list)应在任何其他可执行语句之前出现
第十行和第十四行都将p = p改为this.p = p
9.14.3答案:Test.id = 45错了
因为id是实例变量,不是静态变量,不可以从类中访问