相关疑难解决方法(0)

Java中的静态块与初始化程序块?

可能重复:
静态初始化块

请考虑以下代码:

public class Test {
    {
        System.out.println("Empty block");
    }
    static {
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们知道首先执行静态块,然后执行块.但问题是我从来没有能够理解块的实际效用.任何人都可以展示一个真实的例子 -

  • 无论静态正在使用的块
  • 无论静态块具有不同的事业

java static-block initialization-block

79
推荐指数
2
解决办法
7万
查看次数

为什么在访问Child.name时没有执行Child类的静态块?

我正在学习核心java中的静态块功能.

public class ClassResolution {
    static class Parent {
        public static String name = "Sparsh";
        static {
            System.out.println("this is Parent");
            name = "Parent";
        }
    }

    static class Child extends Parent {
        static {
            System.out.println("this is Child");
            name = "Child";
        }
    }

    public static void main(String[] args) throws ClassNotFoundException {
        System.out.println(Child.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为输出将是:

this is Parent 
this is Child 
Child
Run Code Online (Sandbox Code Playgroud)

但实际输出是:

this is Parent
Parent
Run Code Online (Sandbox Code Playgroud)

而且我不知道为什么.

java

8
推荐指数
1
解决办法
538
查看次数

面临构造函数静态块和代码块执行顺序的问题

我知道当我创建一个实例静态块时首先初始化然后代码块然后构造函数在这里我的代码

public class Main{

public Main() {
    out.println("constructor initialised");
}

static {
    out.println("static block initialised");
}
{
    out.println("Code block initialised");
}

public static void main(String... args) {

    new Main();
}

}
Run Code Online (Sandbox Code Playgroud)

像这样输出

静态块初始化
代码块初始化
构造函数初始化

上面的输出清除了我的概念,但是当我扩展这样的类时

public class Main extends Bear{

public Main() {
    out.println("constructor initialised");
}

static {
    out.println("static block initialised");
}
{
    out.println("Code block initialised");
}

public static void main(String... args) {
    new Main();
}
}
Run Code Online (Sandbox Code Playgroud)

熊类

class Bear{
static {
    out.println("static block initialised of bear class");
} …
Run Code Online (Sandbox Code Playgroud)

java polymorphism inheritance static constructor

3
推荐指数
1
解决办法
73
查看次数