P82
GoodDog.java
package GoodDog; class GoodDog { private int size; public int getSize() { return size; } public void setSize(int s) { size = s; } void bark() { if(size > 60) { System.out.println("Wooof!Woof!"); } else if (size > 14) { System.out.println("Ruff!Ruff!"); } else { System.out.println("Yip!Yip!"); } } }GoodDogTestDrive.java
```java package GoodDog; class GoodDogTestDrive { public static void main (String[] args) { GoodDog one = new GoodDog(); one.setSize(70); GoodDog two = new GoodDog(); two.setSize(8); System.out.println("Dog one:" + one.getSize()); System.out.println("Dog two:" + two.getSize()); one.bark(); two.bark(); } }结果:
任何有值可以被运用到的地方,都可用调用方法的方式来取得该类型的值。 比如: int x = 3 + 24; 可以这样改写: int x = 3 + one.getSize();
(完全看不明白)
实例变量永远都会有默认值。 如果你没有明确的赋值给实例变量,或者没有调用setter,实例变量还是会有值。
integers0floating points0.0booleandfalsereferencesnull局部变量没有默认值。 如果在变量被初始前就要使用的话,编译器会显示错误。
(什么是局部变量?)
1.实例变量是声明在类内,而不是方法中。
class Horse { private double height = 15.2; private String breed; // more code... }2.局部变量是声明在方法中的。
class AddThing { int a; int b = 122; public int add() { int total = a + b; return total; } }3.局部变量在使用前必须初始化。
class Foo { public void go() { int x; int z = x + 3; } }方法的参数基本上与局部变量是相通的——它们都是在方法中声明的。 精确的说应该是在方法的参数列声明的,但相较于实例变量来说,它也是局部的。 这是因为如果调用方法,而没有赋值参数时编译器就会显示错误。所以说,参数一定会被初始化,编译器会确保方法被调用时,会有与声明所相符的参数,且参数会自动地被赋值进去。
使用 == 来比较两个primitive主数据类型,或者判断两个引用是否引用同一个对象。 使用equals()来判断两个对象是否在意义上相等。 像是两个String对象是否带有相同的字节组合。
以值传递就是以拷贝传递。