Java对象类,构造函数链接

时间:2012-07-27 09:51:57

标签: java object

是否为Java中的每个对象创建调用此代码,因为每个对象都扩展对象?或者JVM是否以某种方式优化它以避免在堆中创建一些 Object的对象。

此方法究竟发生了什么 registerNatives()

package java.lang;  

public class Object {
  private static native void registerNatives();
  static {
    registerNatives();
  }

3 个答案:

答案 0 :(得分:2)

静态块仅在加载类时执行一次。

正如herehere所解释的那样,每次初始化类的对象时都会执行的块也可以定义:只需删除static关键字。

答案 1 :(得分:1)

registerNatives().做什么并不重要。这里重要的是你将它包含在静态块中。在Java Class Loader加载类时加载并运行静态块。因此可以保证每个JVM只运行一次。

答案 2 :(得分:0)

1。这里的问题是关于构造函数链接,但关于静态。

<强> 2。当JVM加载类时,将初始化静态变量,当实例化类或调用该类的任何静态方法时,JVM会加载该类。

3。因此每次JVM加载类时都会运行此静态块。