Java中关于静态变量的问题
在Java中许多同学都遇到了这样一个问题:
public class Test
{
public static void main(String args[])
{
static int arr[]=new int[15];
System.out.println (arr[1]);
}
}
编译结果是:
static int arr[]=new int[15]; 这句不能通过编译!
但是去掉静态关键字,就安然无恙了。
其实,这个问题反映的是诸位对于静态数据的初始化和用法不明晰。
请看《Java编程思想》第四版的原话:
无论创建多少个对象,静态数据都只占用一份存储区域。static 关键字不能应用于局部变量,因此他只能作用于域。
现在再看上面的问题,问题就迎刃而解了。在这个主函数中,定义了一个静态变量,它正是一个局部变量!所以它不能通过编译,更别提结果是输出零了!
所以,请大家包括本人在内一定要切记这条规则。
浙公网安备 33010602011771号