
2.2 变量
变量是Java程序中的基本存储单元,用来存储数据。从本质上来说,变量代表了内存中的一个存储区域,这个区域中的数据在同一数据类型下可以不断地变化。通过变量可以非常方便地读取和操作该区域中的数据。变量的内存示意图如图2.3所示。

图2.3 变量的内存示意图
1.变量的声明
在Java中,需要先声明一个变量才能使用这个变量。变量的声明包含两点,分别为数据类型和变量名。声明变量的语法格式如下:

数据类型可以是Java的任意数据类型之一;变量名即变量的名称,用于存储变量值。
例如:

上述代码中的第一行声明了一个变量a,它的数据类型是int。第二行声明了一个变量b,它的数据类型是char。关于数据类型,将在2.3节详细介绍。
可以同时声明多个同一数据类型的变量,变量之间用“,”隔开。例如:

等同于:

上述操作并没有声明变量的值,这相当于没有指定该变量代表的存储空间,如图2.4所示。

图2.4 变量的声明示意图
2.变量的初始化
变量的第一次赋值是对变量进行初始化。在Java中,使用等号“=”实现变量的赋值。变量的初始化有以下两种方式。
(1)在声明变量的同时对变量进行初始化,语法格式如下:

例如:

(2)在第一次使用变量前对变量进行初始化,语法格式如下:

例如:

3.变量的访问
在声明和初始化变量之后,可以对变量进行访问,包括读取变量的值和修改变量的值。例如:

在访问变量时应注意以下几个方面。
(1)变量的操作必须与数据类型匹配。
变量在声明时指定了数据类型,Java编译器会检测对该变量的操作是否与其数据类型匹配,如果对变量的赋值或操作与其数据类型不匹配,那么会产生编译错误。例如:

(2)变量的数据类型只标注一次。
变量在第一次声明时标注数据类型,再次使用时不标注数据类型。例如:

(3)未经声明的变量不能使用。
变量必须先声明再使用,否则会出现编译错误。例如:

(4)变量初始化之后才可以使用。
声明一个变量,必须初始化之后才能使用。例如:
