变量#
变量(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"