变量#

变量(Variable)具有固定类型,其负责存储一个值。

声明#

通过声明语句类型 标识符;声明新变量。标识符不得与使用过的重复。声明变量后,变量的类型不会且不能改变。

输入int i;,此时 JShell 就创建了变量i

赋值#

通过赋值表达式标识符 = 表达式修改已有变量的值,这种操作叫做赋值,其属于二元表达式,其中的等号叫做简单赋值操作符(Simple assignment operator)。在赋值表达式后加上分号就成为赋值语句。

输入i = 43;,此时i的值为43

Java 允许在=前加上二元操作符,组成复合赋值操作符(Compound assignment operator),进行计算并赋值。

输入i += 2;,此时i的值为45

声明和赋值可以同时进行,例如int i = 42意思是声明一个变量i,并初始化为42

自增、自减#

一元操作符++--可对数值类型的变量进行自增、自减操作。

自增、自减操作符放在变量的前面和后面,执行方式不同:前缀操作符先加减、后返回;后缀操作符先返回、后加减。

jshell> i
$1 ==> 45

jshell> i++
$2 ==> 45

jshell> ++i
$3 ==> 47

访问#

变量可作为表达式使用。

尝试:输入以下代码,计算结果:

String s = "Hello Java "
int i = 23
s + i

不变量#

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

输入final String s = "Hello"。此时如果执行s = "world",JShell 仍会修改常量的值,这是因为 JShell 不检查变量是否不可修改。

JShell 中的临时变量#

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

jshell> 1 + 1
$1 ==> 2

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