我是Java的新手,遇到过Static Block。据我所知,所有静态语句(静态初始化,静态块等)在代码执行之前一起运行。
我怀疑这是在运行时还是编译时发生的?
在编译期间,代码将转换为机器语言,并在运行时执行此机器语言代码。那么,在编译期间是否更改了执行顺序,并且所有静态语句在代码开头放在一起,以便它们在其他任何内容之前执行?
很抱歉,如果这看起来像一个非常简单的问题..
答案 0 :(得分:0)
它们在运行时加载。
静态意味着:变量属于类,而不属于类的实例。因此,每个静态变量只有一个值,如果你有n个类的实例,则不是n个值。
答案 1 :(得分:0)
当JVM
(类加载器)加载StaticClass
时(在代码中第一次引用它时),正在运行静态初始化块。