2.4 深入解析变量
第1章介绍了变量。现在,我们来更详细地考查它们。如前所述,变量可以用以下形式声明:
type var-name;
其中type变量的数据类型,var-name是变量名。可以声明任意有效类型的变量,包括之前描述的所有基本类型。在声明变量时,创建这种类型的一个实例。于是,变量的能力由类型决定。例如,boolean类型的变量可以用来存储真值或假值,但不能存储浮点值。另外,变量的类型在其生命周期内不能改变。例如,一个int变量不能变成char变量。
Java中的所有变量必须先声明后使用。因为编译器必须知道一个变量包括什么类型的数据,它才能正确编译使用这个变量的语句,所以这是必要的。这也能使Java可以执行严格的类型检查。
2.4.1 初始化变量
一般而言,需要在使用变量前给变量一个值。你也已经看到,使变量有值的一个方法是使用赋值语句。另一种方法是在声明变量时给个初始值。为此,需要在声明语句的变量名后添加一个等号,并给出需要赋的值。初始化语句的一般形式如下:
type var = value;
这里,value是在创建var时var的值。该值必须和特定的类型兼容。以下是一些例子:
当用逗号分隔的列表声明两个或多个相同类型的变量时,可以给其中一个或多个变量初值。例如,
在这个例子中,只有变量b和变量c经过了初始化。
2.4.2 动态初始化
尽管前面的例子只用常量作为初始值,Java也允许通过使用在变量声明时任意有效的表达式来动态地初始化变量。例如,下面的小程序在给定底面半径和高的情况下计算圆柱的体积。
这里声明了三个局部变量:radius、height和volume。前两个局部变量radius和height由常量初始化。但是,变量volume动态地初始化为圆柱的体积。这里的关键点是初始化表达式可以是初始化时任意有效的元素,包括方法的调用、其他变量和字面量。