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