# 变量
正如您在上一节中学到的,对象将其状态存储在字段中。
int cadence = 0;
int speed = 0;
int gear = 1;
2
3
在 什么是对象? 中向您讲述了一些领域,但您可能还有几个问题,例如:命名字段的规则和约定是什么?除了 int 外,还有其他数据类型?当声明字段时,是否必须初始化字段?如果没有明确地初始化,那么这些字段是否被分配了一个默认值?我们将在本课中探讨这些问题的答案,但在这之前,您必须先了解一些技术上的区别。在 Java 编程语言中,使用术语 “字段”和“变量”;这是新开发人员的常见混乱来源,因为这两者往往似乎指相同的东西。
Java 编程语言定义了以下类型的变量:
实例变量(非静态字段)
从技术上讲,对象将其各自的状态存储在“非静态字段中”,即不使用 static 关键字声明的字段。非静态字段也称为 实例变量,因为他们的值对于每个类的实例是唯一的(换句话说就是每个对象)
类变量(静态字段)
使用 static 修饰的字段,这告诉编译器,只存在该变量的一个副本,而不管类被实例化多少次。 定义特定种类的自行车齿轮数的范围可以被标记为 static。因为在概念上相同数量的齿轮将适用于所有实例;代码
static int numGears = 6;
将创建一个这样的静态字段。此外,可以添加关键字 final 以指示齿轮数不会改变。局部变量
类似于对象如何将其状态存储在字段中,方法通常会将其临时状态存储在局部变量中。声明局部变量的语法类似于声明一个字段(例如,
int count = 0
).没有特殊的关键字修饰,该声明完全来自于声明变量的位置 - 位于方法的开始和结束大括号之间。因此,局部变量只对他们被声明的方法可见;他们不能从该类的其他部分访问。参数
您已经看到了参数的示例,无论是在 Bicycle 类中还是在 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
,约定稍有变化,请将每个字母大写,并将后续单词用下划线字符分开。按照惯例,下划线字符从未在其他地方使用。