跳转至

变量#

情境导入#

假设我们有一个公司。公司创立时有10个人,随后加入了5个人,后来又有1个人辞职。为了记录公司的人数,我们在一张纸上写下来。

上述场景中,“纸”存储着公司的人数。我们将“纸”称为变量,公司的人数就是变量的值。变量(Variable)是存储值的位置,且具有固定的类型

创建变量#

为了获得“纸”,我们需要使用声明(Define)语句

\[ \begin{alignat}{1} \notag &T \space n = v_0;\\ \tag*{// 无初始值} &T \space n;\\ \end{alignat} \]

其中,\(T\)为变量的类型,\(n\)为变量名,\(v_0\)为变量的初始值。变量的类型在数据类型一节中已经介绍过。

声明变量时,变量名不能与已有的重复。

注意

请记住你随时能用 JShell 测试各种语句。在本例中,输入以下代码:

int count = 10;

标识符#

变量的名称是一个标识符。标识符(Identifier)是 Java 中一些特定的对象的名称。

标识符满足以下规则:

  • 第一个字符为字母、_$
  • 其余字符为字母、数字、_$
  • 不允许和保留关键字相同
  • 不允许为truefalsenull
  • 不允许全为下划线

标识符区分大小写,支持汉字。

Java 中有两种关键字:保留关键字和上下文关键字。保留关键字由 Java 保留且不可作为标识符。上下文关键字只在需要时才表现出其特性。

我们接下来将用不同颜色区分关键字。

修改变量#

为了修改“纸”上的内容,我们需要使用赋值语句

\[ n = v_1; \]

其中\(v_1\)是变量的新值。

注意

在 Java 中,一个等号表示赋值,两个等号表示比较!

复合操作符#

\(v_1\)形如\(n + x\)时,我们可以把运算符和赋值号连接起来,形成复合赋值操作符。

\[ \begin{alignat*}{2} \tag{1} &n &\mathrel+= x;\\ \tag{2} &n &\mathrel-= x;\\ &n &\mathrel*= x;\\ &n &\mathrel/= x; \end{alignat*} \]

自增、自减#

\((1)(2)\)式中,若\(x=1\),则还可以用++--操作符。

操作符的位置决定语句的运行顺序:++--在后面时先获取变量值再赋值;在前面时顺序相反。

int a = 2;
int b = a++; // b = 2
int c = a;   // c = 3
int d = ++a; // d = 4
int e = a;   // e = 4

final变量#

声明变量时在类型前添加final可声明final变量。final变量必须且只能赋值一次。未初始化的final变量不可使用。

final T n = initialValue;

JShell 中的临时变量#

你是否注意到每次输入表达式后,返回的结果左边有类似于$n ==>这样的提示?这是因为 JShell 将表达式的值存到了临时变量中。我们可以按一般的变量访问这些临时变量。

jshell> 1 + 1
$1 ==> 2

jshell> "result = " + $1
$2 ==> "result = 2"

练习#

用本节所学内容表示出本节开头所提到的场景。

参考答案
int personCount = 10;
personCount += 5;
personCount--;