3
回答
java中的static初始化块
华为云实践训练营,热门技术免费实践!>>>   
class Primes{
    static int[] primes = new int[4];
    
    static{
        for(int i = 1; i <= primes.length; i++)
            primes[i] = nextPrimes();
    }
    //declaration of nextPrimes()
    ...
    //do something
}

这段代码中的静态初始化块会起到什么作用(请不要回答:“推荐某某书,值得一看”)?
举报
书生_Maple
发帖于5年前 3回/902阅
共有3个答案 最后回答: 5年前
1. 所有静态的(无论其是变量还是块)都按顺序执行.

2. 所有的非静态的块都在静态的(无论其是变量还是块)后执行.

3. 所有的块(无论是静态的还是非静态的)都在构造之前执行.

4. 静态块在类被加载到内存后就开始执行

5. 非静态块是在创建对象时,构造之前被调用 
--- 共有 3 条评论 ---
情天大圣回复 @ZhouMaple : 这样感觉比较蛋疼啊,没测试过哦,这样的设计就有问题! 5年前 回复
书生_Maple那成员方法的执行顺序呢? 如果类X中的某个静态初始化器调用了类Y中的方法,但是Y的静态初始化器又调用了X中的方法来设置它的静态初始化值,那将会发生什么呢? 5年前 回复
书生_Maple谢谢,很有帮助。 5年前 回复

你这会index out of range啊,类加载时就直接抛异常了。

按字面理解就是用4个质数填充数组呗。

--- 共有 1 条评论 ---
书生_Maple首先感谢你的评论和指出的错误。我会注意的。但是你没有回答我想要问的问题啊。 5年前 回复
顶部