变量#
情境导入#
假设我们有一个公司。公司创立时有10个人,随后加入了5个人,后来又有1个人辞职。为了记录公司的人数,我们在一张纸上写下来。
上述场景中,“纸”存储着公司的人数。我们将“纸”称为变量,公司的人数就是变量的值。变量(Variable)是存储值的位置,且具有固定的类型。
Java 是静态类型语言,同时也是强类型语言,意味着 Java 中变量和表达式的类型在运行时不可变,且其值与对其的操作受到类型限制。
创建变量#
为了获得“纸”,我们需要使用声明(Define)语句
Type name = initialValue;
Type name; // 无初始值
其中,Type
为变量的类型,name
为变量名,initialValue
为变量的初始值。变量的类型在前面已经介绍过。
对于整数和浮点数类型,变量的初始值为0
;对于布尔类型,初始值为false
;对于引用类型则为null
。
声明变量时,变量名不能与已有的重复。
注意
请记住你随时能用 JShell 测试各种语句。在本例中,输入以下代码:
int count = 10;
标识符#
变量的名称是一个标识符。标识符(Identifier)是 Java 中一些特定的对象的名称。
标识符满足以下规则:
- 第一个字符为字母、
_
或$
- 其余字符为字母、数字、
_
或$
- 不允许和保留关键字相同
- 不允许为
true
、false
或null
- 不允许全为下划线
标识符区分大小写,支持汉字。
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--;