Variables

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

int cadence = 0;
int speed = 0;
int gear = 1;

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

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

  • 实例变量(非静态字段) 从技术上讲,对象将其各自的状态存储在“非静态字段”中,即声明为不带有static关键字的字段。非静态字段也称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的。一辆自行车的currentSpeed独立于另一辆自行车的currentSpeed

  • 类变量(静态字段) 类变量是使用static修饰符声明的任何字段;这告诉编译器,无论该类被实例化了多少次,该变量确实存在一个副本。可以将定义用于特定类型自行车的齿轮数的字段标记为static,因为从概念上讲,相同的齿轮数将应用于所有实例。代码static int numGears = 6;将创建这样的静态字段。另外,可以添加关键字final来指示档位数量永远不会改变。

  • 局部变量 类似于对象在字段中存储其状态的方法,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如int count = 0;)。没有将变量指定为 local 的特殊关键字。确定完全来自声明变量的位置,该位置在方法的左括号和右括号之间。因此,局部变量仅对声明它们的方法可见;他们是班上其他人无法访问的。

  • 参数 您已经在“ Hello World!”的Bicycle类和main方法中看到了参数示例。应用。回想一下main方法的签名是public static void main(String[] args)args变量是此方法的参数。要记住的重要一点是,参数始终被分类为“变量”而不是“字段”。这也适用于其他参数接受构造(例如构造函数和异常处理程序),您将在本教程的后面部分中学习有关构造。

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

Naming

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

  • 变量名称区分大小写。变量的名称可以是任何合法的标识符-无限 Long 度的 Unicode 字母和数字序列,以字母,美元符号“ $”或下划线字符“ _”开头。但是,约定是,变量名始终以字母开头,而不是“ $”或“ _”。此外,按照惯例,完全不使用美元符号字符。您可能会发现某些情况,其中自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。下划线字符存在类似的约定;从变量名开始以“ _”开头在技术上是合法的,但不建议这样做。不允许使用空格。

  • 后续字符可以是字母,数字,美元符号或下划线字符。约定(和常识)也适用于此规则。为变量选择名称时,请使用完整的单词,而不要使用隐含的缩写。这样做将使您的代码更易于阅读和理解。在许多情况下,这还将使您的代码具有自记录性。例如,名为cadencespeedgear的字段比诸如scg的缩写版本直观得多。另外请记住,您选择的名称不能为关键字或保留字

  • 如果您选择的名称仅包含一个单词,则用所有小写字母拼写该单词。如果它包含多个单词,请大写每个后续单词的第一个字母。名称gearRatiocurrentGear是此约定的主要示例。如果您的变量存储一个常量值,例如static final int NUM_GEARS = 6,则约定会稍有变化,将每个字母大写并用下划线字符分隔后续单词。按照惯例,下划线字符永远不会在其他地方使用。