2.2 变量和常量

2.2.1 变量

  变量是一段有名字的连续存储空间(存储在计算机内存中)。在Java代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。通过给变量赋值可以改变变量的值,所以称之为变量。变量是程序中数据的临时存放场所,变量中可以存放字符串、数值、日期和对象等。

  Java变量的核心要素是变量类型、变量名和变量值,其声明格式如下。

  1. type varName [=value];

  其中type表示Java的数据类型(2.3节会详细介绍Java的基本数据类型),其含义为这个变量里存的是什么类型的数据。varName是变量名,通过这个变量名使用这个变量。value是变量值,在声明变量的时候可以不初始化变量值。通过varName = newValue,可以给这个变量赋新的变量值。

  对于内存而言,“type varName”是声明变量,相当于根据数据类型向内存申请一块空间,而“=value”相当于把变量值放到这个内存空间中。例如int stuAge = 22(省略分号,以下同),可以拆分成int stuAge 和stuAge = 22两条语句,其中int stuAge相当于向内存申请一块可以存储int型变量的空间(实际为4个字节,32位),而stuAge = 22相当于把22这个数放到了这块内存空间中,接下来还可以通过stuAge = 27这条语句把27这个数放到刚才的内存空间中,原来22这个数就不存在了。

  在使用变量时,要避免出现未赋值就使用的情况。虽然在后面的章节中,会看到一些变量即使不赋值也会有默认值,但作为程序员,为了避免程序出错,也要做到变量先赋值后使用。

2.2.2 常量

  在Java语言中,利用final关键字来定义Java常量,其本质为值不可变的变量。

  因为Java常量的本质是值不可变的变量,所以在声明的时候,就必须要进行初始化。和变量不同的是,Java常量在程序中将无法再进行赋值,如果强行赋值,程序会抛出错误信息,并拒绝接受这一个新的值。例如执行下面的程序(为了节省篇幅,代码中省去了部分注释)。

  1. public class FinalValue{
  2. public static void main(String[] args){
  3. final int STU_AGE = 22; //定义Java常量STU_AGE,其值为22
  4. System.out.println(STU_AGE); //打印出STU_AGE的值
  5. STU_AGE = 27; //企图改变Java常量的值
  6. }
  7. }

  程序运行结果如图2.2所示。

2.2 变量和常量 - 图1
图2.2 改变常量的值