在编写程序时,通常需要使用一个“别名”来表示某种类型的可变值,这就是“变量”。
我们在前面的程序中已经在很多的地方用到了“变量”。比如,在前面的Student类中,就定义了变量“name”、“sex”等。
另外,在定义变量的时候,有几个地方需要注意:变量名称区分大小写;变量名称不能重复等。
根据变量的作用范围,Java将变量分为了局部变量和全局变量。这里先说说局部变量。
变量可以被定义为只在某个程序块或只在方法体内部有效,这种类型的变量通常被称为“局部变量”。
局部变量的作用范围有限,只在相应的方法体内或程序块内有效,超出程序块,这些变量都无效。
所谓程序块,就是用“{”和“}”包含起来的代码块。它是一个单独的模块,和方法有点类似,但不像方法一样可以用方法名来调用。
在这个程序块中的变量也是局部变量,即使这个程序体处于类的定义中。
先看下面一段代码示例:
public class Block {
static int j = 4;
{
int i = 4; } public void printit() {
System.out.println(i);// 出错,因为i是局部变量,不能用于变量所在的“局部”的范围之外
}
}
其中的变量i就是局部变量,它只在自己所处的代码块起作用。
声明变量的时候,首先需要指明该变量的数据类型。变量类型后面,跟着此变量的名称,它的名称必须是一个符合Java命名规范的标识符。然后,可以给这个变量赋一个值,当然,这个值的数据类型必须和变量的数据类型一致。
可以同时声明几个同一数据类型的变量,变量之间用“,”隔开:
int i,j,k;
局部变量的另外一种情况是,此变量定义在方法中,此时,此变量的作用范围只局限于此方法体内。
看下面这个示例:
public class Test
{
static int j = 4;
{
int i = 4;
} public void a() {
int k = 100;
} public void b() {
System.out.println(k);// 出错,k的作用范围只局限于方法a中。
}
}
因为变量k是定义在方法a中的,所以它的作用范围只局限在方法a中。在方法b中试图使用这个变量,在编译的时候将会报错。
局部变量在方法或代码块执行时创建,方法或代码块执行结束时销毁。
局部变量在使用前必须初始化。这点必须注意。初始化即给这个变量赋值。基本上现在完善的IDE,在你编写好代码后,会自动检查未初始化的局部变量,并以警告的方式来提醒你,给这个局部变量赋值!
今天继续来说Java中局部变量的初始化。只需要几句话就可以over了。
局部变量也可以像成员变量一样,先声明,再初始化;或者在声明的同时,就对其进行初始化。也可以一次声明几个同一数据类型的变量。
但是,系统不会对局部变量进行默认的初始化,因此,局部变量在使用之前,必须对其进行显式初始化。这就是和成员变量相对应的默认(隐式)初始化。
我们来看个示例,可以再开发工具中测试一下。
下面的代码中,因为n没有初始化,所以,这个时候如果对它进行操作,将会报错:
public class Test{
… …
public void aMethod(int j){
int m,n,k;
m = j;
k = 100;
System.out.println(m);
System.out.println(n);//Error
System.out.println(k);
}
}
注意,在这个程序中的变量m,它根据方法的传入参数j来初始化,所以这个时候在方法体中是可以对其进行任何和其数据类型相匹配的操作了。