Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
考虑以下类:
public class IdentifyMyParts {
public static int x = 7;
public int y = 3;
}
问题:什么是类变量?
答案:x
问题:什么是实例变量?
答案:y
问题:以下代码的输出是什么:
IdentifyMyParts a = new IdentifyMyParts();
IdentifyMyParts b = new IdentifyMyParts();
a.y = 5;
b.y = 6;
a.x = 1;
b.x = 2;
System.out.println("a.y = " + a.y);
System.out.println("b.y = " + b.y);
System.out.println("a.x = " + a.x);
System.out.println("b.x = " + b.x);
System.out.println("IdentifyMyParts.x = " + IdentifyMyParts.x);
答案:这是输出:
a.y = 5 b.y = 6 a.x = 2 b.x = 2 IdentifyMyParts.x = 2
因为 x 在类 IdentifyMyParts 中被定义为 public static int,所以对 x 的每个引用都将具有该值最后一次分配,因为 x 是在类的所有实例之间共享的静态变量(因此是一个类变量)。也就是说,只有一个 x:当 x 的值在任何实例中发生变化时,它会影响所有 IdentifyMyParts实例的 x 的值。
这包含在 Understanding Instance and Class Members 的类变量部分中。
Exercise:写一个类,其实例代表一副牌中的单张扑克牌。扑克牌有两个显着属性:大小和花色。请务必保留你的解决方案,因为你将被要求在 Enum Types 中重写它。
答案:Card.java
.
Exercise:编写一个实例代表 full 卡片组的类。你也应该保留此解决方案。
答案:See Deck.java
.
Exercise:编写一个小程序来测试你的套牌和卡片类。该程序可以像创建一副牌并显示其卡一样简单。
答案:See DisplayDeck.java
.