[英]Static Block in Java [duplicate]
前几天,我在查看一些代码,然后发现:
static {
...
}
来自C ++,我不知道为什么会这样。 它不是错误,因为代码编译良好。 这个“静态”代码块是什么?
这是一个静态初始化器。 它在加载类时执行,并且是放置静态变量的好地方。
从http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html
一个类可以具有任意数量的静态初始化块,并且它们可以出现在类主体中的任何位置。 运行时系统保证静态初始化块按在源代码中出现的顺序被调用。
如果您有一个带有静态查找映射的类,它可能看起来像这样
class MyClass {
static Map<Double, String> labels;
static {
labels = new HashMap<Double, String>();
labels.put(5.5, "five and a half");
labels.put(7.1, "seven point 1");
}
//...
}
这很有用,因为无法使用labels = ...
初始化上述静态字段。 它需要以某种方式调用put-method。
这是一个代码块,当类加载器加载该类时将执行该代码块。 它旨在对类的静态成员进行初始化。
也可以编写非静态初始化器,这些初始化器看起来更陌生:
public class Foo {
{
// This code will be executed before every constructor
// but after the call to super()
}
Foo() {
}
}
静态块可以用来表明程序也可以在没有主要功能的情况下运行。
//static block
//static block is used to initlize static data member of the clas at the time of clas loading
//static block is exeuted before the main
class B
{
static
{
System.out.println("Welcome to Java");
System.exit(0);
}
}
静态块在任何程序的生命周期中执行一次,静态块的另一个属性是它在main方法之前执行。
静态块用于初始化代码,并将在JVM加载类时执行。请参考以下链接,其中提供了详细说明。 http://www.jusfortechies.com/java/core-java/static-blocks.php
是的,静态块用于初始化代码,它将在JVM启动执行时加载。
静态块在Java的早期版本中使用,但在最新版本中不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.