变量

原文: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

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

  1. int cadence = 0;
  2. int speed = 0;
  3. 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变量是此方法的参数。要记住的重要一点是参数总是被分类为“变量”而不是“字段”。这也适用于其他参数接受构造(例如构造器和异常处理器),您将在本教程后面学习。

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

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