Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用已不再可用的技术。
有关Java SE 9及以后版本中更新的语言功能的摘要,请参阅Java语言变化。
有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息,请参阅JDK发行说明。
正如你在之前的课程中学到的,对象将其状态存储在字段中。
int cadence = 0; int speed = 0; int gear = 1;
在什么是对象?讨论中,我们介绍了字段,但你可能还有一些问题,比如:字段的命名规则和约定是什么?除了int
,还有哪些数据类型?字段在声明时是否必须初始化?如果没有明确初始化,字段是否被分配默认值?我们将在本课程中探讨这些问题的答案,但在此之前,你必须首先了解一些技术上的区别。在Java编程语言中,术语“字段”和“变量”都被使用;这是新开发人员常见的困惑之源,因为它们似乎经常指的是同一件事。
Java编程语言定义了以下几种变量:
static
关键字声明的字段。非静态字段也被称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的;一个自行车的currentSpeed
与另一个自行车的currentSpeed
是独立的。static
修饰符声明的任何字段;这告诉编译器,无论类实例化了多少次,都只有一个此变量的副本存在。一个用于特定类型自行车的齿轮数量的字段可以被标记为static
,因为概念上相同数量的齿轮将适用于所有实例。代码static int numGears = 6;
将创建这样一个静态字段。此外,可以添加关键字final
来表示齿轮数量永远不会改变。int count = 0;
)。没有将变量指定为局部变量的特殊关键字;变量是否为局部变量完全取决于变量声明的位置——即在方法的大括号之间。因此,局部变量仅对声明它们的方法可见;它们无法从类的其他位置访问。Bicycle
类和“Hello World!”应用程序的main
方法中看到了参数的示例。记得main
方法的签名是public static void main(String[] args)
。在这里,args
变量是该方法的参数。重要的是要记住,参数总是被分类为“变量”,而不是“字段”。这也适用于其他接受参数的结构(如构造函数和异常处理程序),你将在本教程的后面学习到。话虽如此,本教程的其余部分在讨论字段和变量时使用以下一般准则。如果我们讨论的是“一般的字段”(不包括局部变量和参数),我们可以简单地称之为“字段”。如果讨论适用于“所有上述情况”,我们可以简单地称之为“变量”。如果上下文需要区分,我们将使用适当的具体术语(静态字段、局部变量等)。您也可能偶尔看到术语“成员”也被使用。一个类型的字段、方法和嵌套类型统称为其成员。
每种编程语言都有其自己的一套规则和约定,用于允许您使用的名称种类,Java编程语言也不例外。关于变量命名的规则和约定可以总结如下:
$
"或下划线字符"_
"开头的长度不受限制的Unicode字母和数字序列。但惯例是始终以字母开头,而不是"$
"或"_
"。此外,按照惯例,根本不使用美元符号字符。您可能会发现一些情况下自动生成的名称将包含美元符号,但您的变量名应始终避免使用它。对于下划线字符也存在类似的约定;虽然使用下划线字符"_
"开头变量名在技术上是合法的,但这种做法是不被鼓励的。不允许有空格。cadence
、speed
和gear
的字段比缩写版本如s
、c
和g
更直观。还要记住,您选择的名称不能是关键字或保留字。gearRatio
和currentGear
是这种约定的典型例子。如果您的变量存储一个常量值,例如static final int NUM_GEARS = 6
,约定略有变化,每个字母都要大写,并用下划线字符分隔后续单词。按照惯例,下划线字符在其他地方不使用。