2014-09-01 164 views
-3

方案1:静态块VS中的静态变量初始化顺序

class A{ 
    static int foo=56789; 
    static{ 
    foo=999; 
    } 
    public static void main(String[] args) { 
    System.out.println(foo); 
    } 
} 

输出:999

方案2:

class A{ 
    static { 
    foo=999; 
} 
static int foo=56789; 
public static void main(String[] args) { 
    System.out.println(foo); 
    } 
} 

输出:56789

在情形2如何它将内存分配给foo变量(在静态块中),因为没有提及数据类型(作为代码)从顶部到底部运行)。

+2

是不是你的问题实际上是你的问题的答案? – 2014-09-01 13:57:00

+0

代码通常不从上到下运行吗?如果你交换两个语句的顺序,他们不会改变它们运行的​​顺序吗?这里的惊喜在哪里? – 2014-09-01 13:59:20

+0

@PeterLawrey lawrey在场景2中,它如何将内存分配给foo变量,因为在静态块中没有提及数据类型 – atti 2014-09-01 14:27:58

回答

0

静态块/变量按照它们放置在源代码中的顺序执行。即您用眼睛看到的顺序。

从上到下。

+0

@downvoter,关心评论。我想纠正我的文章。 – 2014-09-01 13:58:57

+0

-3。好啦好啦。我会让你们振作起来。哈哈 – 2014-09-01 14:00:57