跳转至

变量#

情境导入#

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

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

Java 是静态类型语言,同时也是强类型语言,意味着 Java 中变量和表达式的类型在运行时不可变,且其值与对其的操作受到类型限制。

创建变量#

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

Type name = initialValue;
Type name; // 无初始值

其中,Type为变量的类型,name为变量名,initialValue为变量的初始值。变量的类型在前面已经介绍过。

对于整数和浮点数类型,变量的初始值为0;对于布尔类型,初始值为false;对于引用类型则为null

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

注意

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

int count = 10;

标识符#

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

标识符满足以下规则:

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

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

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

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

修改变量#

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

name = newValue;

其中newValue是变量的新值。

注意

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

复合操作符#

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

name += x; // (1)
name -= x; // (2)
name *= x;
name /= x;

自增、自减#

在(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--;