1. 局部变量的定义
根据Java官方文档的定义“There is no special keyword designating a variable as local; that determination comes entirely from the location in which the variable is declared — which is between the opening and closing braces of a method”,我们可以将局部变量理解为在方法的{}中所声明的变量。不过个人理解Java局部变量的概念应该更广:凡是在{}代码块中所声明的变量都是局部变量(解释见后“局部变量的作用域”)。
2. 局部变量的初始化
- 基本数据类型的局部变量在声明后如果不进行初始化便使用,会引起编译时的报错。代码如下:
public static void main(String[] args)
{
int num;
System.out.println("num is " + num);
}
编译时报错:
draft.java:7: error: variable num might not have been initialized
System.out.println("num is " + num);
^
1 error
即此时局部变量必须被初始化后才能被使用。
2. 如果局部变量为数组,那么数组元素会自动初始化,因此我们可以直接使用数组元素。如下:
public static void main(String[] args)
{
int[] arr = new int[5];
// int数组的元素默认初始化为0
for(int i = 0; i < arr.length; i++)
System.out.printf("arr[%d] is %d\n", i, arr[i]);
}
打印结果为:
arr[0] is 0
arr[1] is 0
arr[2] is 0
arr[3] is 0
arr[4] is 0
3. 局部变量的作用域
- 对于方法中的局部变量,其只能在此方法内被使用。
- 在{}代码块中声明的局部变量只能在该代码块中使用。如下:
int num = 5;
if(num > 3)
{
int j = 1;
}
System.out.printf("j is %d ", j);
编译时会报错该变量无法找到。
draft.java:26: error: cannot find symbol
System.out.printf("j is %d ", j);
^
symbol: variable j
location: class draft
1 error