正如您在上一课中学到的,对象存储在字段中。

  1. int cadence = 0;
  2. int speed = 0;
  3. int gear = 1;

什么是对象?讨论中,向您介绍了字段,但是您可能还有几个问题,例如:命名字段的规则和约定是什么?除了int,还有其他哪些数据类型?声明字段时是否必须对其进行初始化?如果未显式初始化字段,是否为它们分配默认值?在本课中,我们将探讨这些问题的答案,但是在我们这样做之前,您必须首先意识到一些技术上的区别。在Java编程语言中,术语“字段”和“变量”都被使用。这是新开发人员之间普遍感到困惑的根源,因为两者似乎常常指的是同一件事。

Java编程语言定义了以下种类的变量:

  • 实例变量(非静态字段)从技术上讲,对象将其各自的状态存储在“非静态字段(Non-Static Fields)”中,即声明为不使用static关键字的字段。非静态字段也称为实例变量(**Instance Variables**因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的。一个自行车的currentSpeed,独立于另一个自行车的currentSpeed
  • 类变量(静态字段)类变量(Class Variables)是使用static修饰符声明的任何字段;这告诉编译器,无论该类被实例化了多少次,该变量确实只存在一个副本。可以将特定类型自行车的齿轮数的字段标记为static,因为从概念上讲,特定类型的自行车有相同的齿轮数。代码static int numGears = 6;就创建了这样的静态字段(Static Fields)。另外,可以添加final关键字以指示齿轮数永远不会改变。
  • 局部变量 类似于对象在字段中存储其状态,方法(method)通常会将其临时状态存储在局部变量(Local Variables。声明局部变量的语法,类似于声明字段(例如int count = 0;)。没有特殊的关键字将变量指定为局部变量。该确定完全来自变量声明的位置,该位置在方法的左花括号和右花括号之间。因此,局部变量仅对声明它们的方法可见;它们是类上其他部分无法访问的。
  • 参数 您已经在Bicycle类和“Hello World!”程序的main方法中看到了参数(Parameters)示例。回想一下,main方法的签名是public static void main(String[] args)。在此,args变量是该方法的参数。要记住的重要一点是,参数始终被分类为“变量Variables”而不是“字段(Fields)”。这也适用于其他接受参数的构造(例如构造器(**constructors**)异常处理程序(**exception handlers**)),您将在本教程的后面部分了解到。

话虽如此,本教程的其余部分在讨论字段和变量时将使用以下通用准则。如果我们谈论的是“一般字段”(不包括局部变量和参数),我们可以简单地说“字段”。如果讨论适用于“以上所有内容”,我们可以简单地说“变量”。如果上下文需要区分,我们将酌情使用特定术语(静态字段,局部变量等)。您可能还会偶尔看到术语“成员(**member**)”。类型(**type**)的字段,方法和嵌套类型统称为其成员

命名

对于允许使用的各种名称,每种编程语言都有自己的规则和约定集,Java编程语言也不例外。命名变量的规则和约定,可以总结如下:

  • 变量名称区分大小写。变量的名称可以是任何合法的标识符(identifier)——无限长度的Unicode字母和数字序列,以字母,美元符号“ $”或下划线字符“ _” 开头。但是,惯例是变量名始终以字母开头,而不是“ $”或“ _”。此外,按照惯例,完全不会使用美元符号字符。您可能会发现某些情况,其中自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。下划线字符存在类似的约定;尽管以“ _” 开头的变量名,在技术上是合法的,但不建议这样做。不允许使用空格。
  • 后续字符可以是字母,数字,美元符号或下划线字符。约定(和常识)也适用于此规则。为变量选择名称时,请使用完整的单词,而不要使用隐晦的缩写。这样做将使您的代码更易于阅读和理解。在许多情况下,这还将使您的代码具有自记录性。例如,命名cadencespeedgear,比缩写版本,如scg,更直观。另外,请记住,您选择的名称不能是 关键字(keyword)或保留字(reserved word)
  • 如果您选择的名称仅包含一个单词,则用所有小写字母拼写该单词。如果它包含多个单词,请大写每个后续单词的第一个字母。名称gearRatiocurrentGear是该约定的主要示例。如果您的变量存储一个常量值(例如)static final int NUM_GEARS = 6,则约定会稍有变化,将每个字母大写,并用下划线字符分隔后续单词。按照惯例,下划线字符永远不会在其他地方使用。

    Java语言关键字

    这是Java编程语言中的关键字列表。您不能在程序中使用以下任何一种作为标识符。关键字constgoto保留,即使它们当前未使用。truefalsenull可能看起来像关键字,但它们实际上是字面量。您不能在程序中将它们用作标识符。
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while

备注

未使用
1.2版本添加
1.4版本添加
5.0版本添加