Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
正如你在前一课中学到的,一个对象将它的状态存储在 fields (字段) 中。
int cadence = 0; int speed = 0; int gear = 1;
What Is an Object? 部分向你介绍了字段,但你可能还有一些问题,例如:命名字段的规则和规范是什么?除 int
之外,还有哪些其他数据类型?字段必须在声明时进行初始化?如果字段未被明确初始化,字段是否分配了默认值?我们将在本课中探讨这些问题的答案,但在此之前,你必须首先意识到一些技术上的区别。在 Java 编程语言中,术语 "字段" 和 "变量" 都被使用;这是新开发人员混淆的一个常见原因,因为两者似乎都指向相同的东西。
Java 编程语言定义了以下几种变量:
static
关键字的情况下声明的字段。非静态字段也称为 instance variables (实例变量),因为它们的值对类的每个 instance (实例)(对于每个对象,换句话说)是唯一的;一辆自行车的 currentSpeed
与另一辆自行车的 currentSpeed
无关。static
修饰符声明的任何字段;这告诉编译器,这个变量只有一个副本存在,而不管该类实例化了多少次。定义特定类型自行车的齿轮数量的字段可以被标记为 static
,因为概念上相同数量的齿轮将适用于所有情况。代码 static int numGears = 6;
会创建这样一个静态字段。另外,可以添加关键字 final
来指示齿轮数量永远不会改变。int count = 0;
)。没有特殊的关键字将变量指定为局部变量;完全根据变量声明的位置判断 局部变量位于方法的开始和结束括号之间。因此,局部变量只对声明它们的方法可见;它们不能从类的其他部分访问。Bicycle
类和 "Hello World!" 应用的 main
方法中看到了参数示例。回想一下,main
方法的签名是 public static void main(String[] args)
。这里,args
变量是此方法的参数。重要的是要记住参数总是被分类为 "变量" 而不是 "字段"。这也适用于其他接受参数的构造(如构造函数和异常处理程序),你将在本教程的后面部分了解这些构造。话虽如此,本教程的其余部分在讨论字段和变量时使用以下一般准则。如果我们在谈论 "一般字段"(不包括局部变量和参数),我们可能会简单地说 "字段"。如果讨论适用于 "所有上述",我们可以简单地说 " 变量"。如果上下文需要区分,我们将酌情使用特定的术语(静态字段,局部变量等)。你也可能偶尔会看到使用 "member(成员)" 一词。类型的字段,方法和嵌套类型统称为 members。
每种编程语言都有自己的一套规则和规范,用于允许使用的名称类型,Java 编程语言也不例外。命名变量的规则和规范可以总结如下:
$
" 或下划线字符 "_
" 开头。但是,规范是始终用字母开头变量名称,而不是 "$
" 或 "_
"。此外,按照规范,美元符号字符根本不会被使用。你可能会发现某些情况下自动生成的名称将包含美元符号,但你的变量名称应始终避免使用它。下划线字符存在类似的规范;虽然在技术上可以合法地使用 '_
' 开头变量名称,但这种做法是不鼓励的。不允许使用空格。cadence
,speed
和 gear
的字段比缩写版本更直观,例如 s
,c
和 g
。另请注意,你选择的名称不得是 keyword or reserved word (关键字或保留字)。gearRatio
和 currentGear
是这个规范的主要例子。如果你的变量存储了一个常数值,比如 static final int NUM_GEARS = 6
,那么规范略有变化,大写每个字母并将后续单词与下划线字符分开。按照规范,下划线字符从来不会在其他地方使用。