2.2.2 变量的赋值

声明变量之后,可以使用赋值运算符等号“=”为它赋值。赋值有两种方法:一种是在声明时为其赋值,如例2-4;另一种是先声明后赋值。

【例2-6】

下面首先声明int类型的age变量,声明时为其指定初始值8,然后声明double类型的price变量,声明后将其赋值为12.5。示例代码如下:

int age = 8;//声明age变量并赋值
double price;//声明price变量
price = 12.5;//为price变量赋值

注意:如果只声明变量而不赋值,系统将会使用默认值进行初始化。如byte、short、int、long类型的默认值为0;double和float类型的默认值为0.0;boolean类型的默认值为false;所有引用类型的默认值为null。

2.2.3 变量的作用域

变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域访问变量,则编译时会出现错误。变量的作用域决定了变量的生命周期,变量的生命周期是指从声明一个变量并分配内存空间开始,到释放该变量并清除所占用的内存空间结束。

变量声明的位置决定了变量的作用域,根据作用域的不同,可以将变量分为全局变量和局部变量。

1.全局变量

全局变量即在程序范围之内都有效的变量。

【例2-7】

在下面的代码中,Test类中声明的a变量就是一个全局变量,它在整个类中都可以使用:

public class Test {
int a = 10;
public static void main(String[] args) {
Test v = new Test();
v.print();
}
void print() {
System.out.println("全局变量 a=" + a);
}
}

2.局部变量

局部变量就是在程序中的一部分内(如main()方法)是有效的。在类的方法中声明的变量(包括方法的参数)属于局部变量,它们只在当前的方法内有效,不能用于类的其他方法中。在方法的代码块(如if语句块)中声明的变量也是局部变量,它只在该代码块内有效。

局部变量的生命周期取决于方法,当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间;当方法的调用结束后,该方法中的局部变量占用的内存空间将会被释放,并被销毁掉。

【例2-8】

在Test类中声明maxvalue变量和print()方法,在print()方法中获取传入的参数,并将参数值保存到value变量中。通过if语句判断value变量与maxvalue变量值的大小,根据判断返回不同的结果。示例代码如下:

public class Test {
double maxvalue = 120;
double print(double val) {
double value = val;
if (value > maxvalue)
return value;
else
return maxvalue;
}
}

在上述代码中,maxvalue是全局变量,它在该类的任何地方都可以使用。而print()方法的value则是一个局部变量,它只能在该方法中使用。如果在方法外部调用,那么在编译时就会出现错误。