博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java中关于静态变量的问题

Posted on 2010-05-15 20:54  子虚  阅读(175)  评论(0)    收藏  举报

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 关键字不能应用于局部变量,因此他只能作用于域。

 

现在再看上面的问题,问题就迎刃而解了。在这个主函数中,定义了一个静态变量,它正是一个局部变量!所以它不能通过编译,更别提结果是输出零了!

 

所以,请大家包括本人在内一定要切记这条规则。