Java: 之间有什么区别?

2023-12-31

我无法理解以下文字...这是否意味着<clinit>用于空构造函数?为什么拥有两个不同的版本很重要?

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html

2.9. Special Methods

在 Java 虚拟机级别,每个构造函数(第 2.12 节)都显示为实例初始化方法,该方法具有 特别的名字<init>。该名称由编译器提供。因为 姓名<init>不是有效的标识符,不能直接在 用Java编程语言编写的程序。实例 初始化方法只能在 Java 虚拟内部调用 机器通过invokespecial指令,并且它们只能被调用 在未初始化的类实例上。实例初始化方法 获取构造函数的访问权限(第 2.7.4 节) 它是派生出来的。

类或接口至多有一个类或接口初始化方法,并通过调用该方法进行初始化(第 2.17.4 节) 方法。类或接口的初始化方法是静态的 并且不接受任何争论。它有一个特别的名字<clinit>。这个名字是 由编译器提供。因为名字<clinit>不是有效的 标识符,它不能直接在用 Java 编程语言。类和接口的初始化方法 由 Java 虚拟机隐式调用;他们从来都不是 直接从任何 Java 虚拟机 inw2struction 调用,但是 仅作为类初始化过程的一部分间接调用。


<init>是实例的(或其中一个)构造函数,以及非静态字段初始化。

<clinit>是类的静态初始化块和静态字段初始化。

class X {

   static Log log = LogFactory.getLog(); // <clinit>

   private int x = 1;   // <init>

   X(){
      // <init>
   }

   static {
      // <clinit>
   }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java: 之间有什么区别? 的相关文章

随机推荐

  • 如何使用 Java API 设置消息选择器?

    我正在尝试编写一个简单的测试用例 以根据消息属性从队列中提取消息 命中 7 5 0 3 QMgr 并使用 7 5 0 3 客户端 jar 我在网上看到的所有内容都表明我需要在打开队列时指定消息选择器 我对此很满意 但我只看到两种打开它的方法
  • 优化 PHP 字符串连接 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这篇文章实际上并不是一个问题 但分享
  • SQLSTATE[23000]:违反完整性约束:19 NOT NULL 约束失败:

    尝试在 Laravel 上创建一个待办事项列表应用程序 但是当我尝试单击按钮创建一个新的待办事项列表时 我收到此错误 SQLSTATE 23000 Integrity constraint violation 19 NOT NULL con
  • jQuery 中的 ConfigurationManager.AppSettings

    我正在使用 mvc3 c 配置管理器中的应用程序设置在控制器中运行良好 但我想在我的 jquery 中使用这些常量 有没有办法在 jQuery 中使用 ConfigurationManager AppSettings 提前致谢 希望这对您有
  • 多部分/表单数据与应用程序/八位字节流

    我正在创建一个简单的REST API用于上传文件 从其他 API 中我发现他们使用 multipart form data 内容类型 但对我来说 它看起来像 application octet stream 就简单多了 如果我不打算随文件发
  • 为什么alloc方法可以增加retain count

    当我们打电话时alloc对于一个类 我知道对象的计数将 1 例如 NSObject obj NSObject alloc obj的引用计数将为1 我阅读了源代码 但找不到一些代码可以告诉我为什么alloc可以添加引用计数 还有一些博客说al
  • 如何将依赖项注入存储库基类

    各种种类 EnableXXXRepositorySpring Data 的注释允许您为存储库指定自定义基类 该基类将用作存储库中方法的实现 如果这样的基类需要访问其他beanApplicationContext如何注射这些药物 它不能开箱即
  • 创建新数据库时的最佳 ANSI 选项

    我正在为我们的生产环境在 SQL Server 2012 上创建一个新数据库 当我使用 SQL Server Management Studio 中的 新数据库 选项并生成输出时 我得到 CREATE DATABASE AAA CONTAI
  • makefile:如何链接不同子目录中的目标文件并包含不同的搜索路径

    我想更改测试代码的位置 tsnnls test DKU c 并且我无法在 makefile 中进行更改以正确反映此文件夹更改 一些帮助将不胜感激 我有两个问题 1 如何链接不同子目录中的目标文件 2 包含不同的搜索路径 在我的示例中为 3
  • 如何按嵌套多重集中的值排序?

    An 先前的问题 https stackoverflow com questions 69552492 jooq multiset order result set via conditions on multiset涵盖如何使用 jOOQ
  • 在 React Native 应用程序中读取 NFC 标签

    我想制作一个可以读取 NFC 标签的反应本机应用程序 我在用反应本机 NFC但无法让它工作 谁能帮助找出我做错了什么并指出我正确的方向 Code in 索引 android js如下 import React Component from
  • 用类装饰器覆盖构造函数?

    如何使用 ES7 类装饰器重写构造函数 例如 我想要这样的东西 injectAttributes foo 42 class Bar constructor console log this foo 哪里的injectAttributes装饰
  • 使用多线程访问同一个字符串(StringBuilder)

    我的问题是 如果我有时在同一个字符串上使用多线程 该字符串不会被替换 我在记事本上写了这个 所以语法可能是 wrong 使用 System Thread 当然还有其他 class private static StringBuild con
  • 如何在 C++ 中使用 malloc() [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何使用malloc 在C 程序中
  • 在 javaScript 中使用 for 循环时,如何为特定元素设置属性?

    下面我有一个分配给变量的函数 本质上我让它工作 将属性应用于元素集合 我的问题是我希望将设置为属性的元素与我传递给函数的字符串相匹配 我知道问题就在这里 document links i setAttribute target blank
  • 带参数的 Kivy 按钮绑定函数

    我正在尝试学习如何在 Kivy 中创建应用程序 但在向函数发送参数时遇到问题 我想将输入中的文本发送到函数并打印它 有人可以告诉我该怎么做吗 from kivy app import App from kivy uix boxlayout
  • XCode6.3可以配合IOS7.1 SDK使用吗

    是否可以将 XCode6 beta 与 IOS 7 1 SDK 一起使用 新工具好多了 但我需要为 IOS7 构建 是的 1 首先下载7 1 SDK XCode6Beta gt 首选项 gt 下载 gt iOS 7 1 模拟器 Note X
  • 存储库模式可以用于加载“部分实体”吗

    我试图更好地理解领域驱动设计中的存储库模式 存储库模式实现的所有示例都仅处理实体 但是如果我只需要检索实体的某些部分怎么办 例如 我有具有大量属性的客户端实体 我可以在 ClientRepository 中定义这样的东西吗 public I
  • __stdcall 函数指针的模板部分特化

    typedef bool my function f int double typedef bool stdcall my function f2 int double template
  • Java: 之间有什么区别?

    我无法理解以下文字 这是否意味着