# 变量

> 原文： [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html)

正如您在上一课中所了解到的，对象将其状态存储在 _ 字段 _ 中。

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

```

[什么是对象？](../concepts/object.html) 讨论向您介绍了字段，但您可能还有一些问题，例如：命名字段的规则和约定是什么？除`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`变量是此方法的参数。要记住的重要一点是参数总是被分类为“变量”而不是“字段”。这也适用于其他参数接受构造（例如构造函数和异常处理程序），您将在本教程后面学习。

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

*   变量名称区分大小写。变量的名称可以是任何合法标识符 - 无限长度的 Unicode 字母和数字序列，以字母开头，美元符号“`$`”或下划线字符“`_`”。但是，惯例是始终用字母开始变量名，而不是“`$`”或“`_`”。此外，按照惯例，美元符号字符根本不会被使用。您可能会发现某些情况，其中自动生成的名称将包含美元符号，但您的变量名称应始终避免使用它。对于下划线字符存在类似的约定;虽然用“`_`”开始你的变量名称在技术上是合法的，但这种做法是不鼓励的。不允许有空白区域。
*   后续字符可以是字母，数字，美元符号或下划线字符。约定（和常识）也适用于此规则。为变量选择名称时，请使用完整单词而不是隐藏缩写。这样做可以使您的代码更易于阅读和理解。在许多情况下，它还会使您的代码自我记录;例如，名为`cadence`，`speed`和`gear`的字段比缩写版本更直观，例如`s`，`c`和`g`。另请注意，您选择的名称不能是[关键字或保留字](_keywords.html)。
*   如果您选择的名称只包含一个单词，则以全小写字母拼写该单词。如果它由多个单词组成，则将每个后续单词的首字母大写。名称`gearRatio`和`currentGear`是此惯例的主要示例。如果您的变量存储常量值，例如`static final int NUM_GEARS = 6`，则约定会略有变化，将每个字母大写并用后突字符分隔后续单词。按照惯例，下划线字符从未在别处使用过。