关于Java中初始化块的一些问题

2024-02-01

  1. 您主要在哪里使用初始化块?
  2. 您可以使用它们为静态实例变量赋值吗?
  3. 这与使用构造函数分配有什么不同?
  4. 我的书说初始化块是在“类加载”时执行的。加载类是什么意思?

附加问题 哪个更好?

class {static final instance-variable = val} 

or

class {static final instance-variable;  static {instance-variable=val}}

初始化块总是被调用不管您想要使用的构造函数。因此,如果相关类具有多个构造函数,并且您希望无论使用哪个构造函数都运行一些代码,那么请使用初始化块。

但是,当用于分配默认值时,我只是直接分配它们。如果他们是偶数常量,然后我会添加final也到修饰符列表。

private static final String VAL1 = "VALUE";

Update由于您彻底改变了问题,因此这是一个新的答案:

1)你主要在哪里使用初始化块?

无论使用什么构造函数都执行一些代码。

2)你能用它们给静态实例变量赋值吗?

你需要一个static初始化块。

private static final String FOO;

static {
    FOO = "bar";
}

这样做的好处是您可以做的不仅仅是分配一个值。例如。从某种方法获取它并处理异常:

static {
    try {
        FOO = getItSomehow();
    } catch (Exception e) {
        throw new ExceptionInInitializerError(e);
    }
}

3)这与使用构造函数赋值有何不同?

无论使用什么构造函数,它总是被分配。

4)我的书说初始化块是在“类加载”时执行的。加载类是什么意思?

这本书实际上讲的是一个static初始化块。当您在代码中第一次引用某个类时,通常会加载该类。您也可以通过以下方式强制加载Class#forName()(就像您对 JDBC 驱动程序所做的那样)。我之前发布过一个包含更多示例和解释的答案here https://stackoverflow.com/questions/1893274/doubt-in-java-basics/1893321#1893321.

希望这可以帮助。

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

关于Java中初始化块的一些问题 的相关文章

  • 将 Java 对象图保存为 XML 文件

    将任意 Java 对象图保存为 XML 文件 并能够在以后重新水合对象 的最简单易用的技术是什么 这里最简单的方法是序列化对象图 Java 1 4 内置了对 XML 序列化的支持 我成功使用的一个解决方案是 XStream http x s
  • Javadoc 链接到其他类中的方法

    目前我正在使用以下 Javadoc 语法引用其他类中的方法 see link com my package Class method 据我从文档中了解到 这是执行此操作的正确方法 但现在到了有趣的部分 或者说令人沮丧的部分 当我生成这个 j
  • 浏览时 Java Applet 不会被终止

    当用户离开加载小程序的页面时 如何停止 Java 小程序的进程 我正在使用 Chrome 现在要杀死小程序 我必须使用窗口的任务栏并杀死进程 java exe Java applet 具有生命周期方法 那些是init start stop
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • 如何用 Java 制作 Windows 7 工具提示

    我一直在网上到处寻找 但没有找到这个小问题的答案 在 Windows 7 中 我认为在 Vista 中 您有一个漂亮的圆形银色工具提示 它看起来比旧的黄色盒装蹩脚工具提示要好得多 下面的 How do I make a Windows 7
  • Runtime.getRuntime().exec(cmd) 挂起

    我正在执行一个命令 该命令返回文件的修订号 文件名 但如果执行命令时出现问题 应用程序就会挂起 我可以做什么来避免这种情况 请在下面找到我的代码 String cmd cmd C si viewhistory fields revision
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 不带破折号的 CliBuilder 参数

    使用 Groovy CliBuilder 理想情况下我希望有一个命令行 如下所示 MyProgram groovy CommandName arg1 arg2 arg3 是否可以使用 CliBuilder 解析提取 CommandName
  • 如何在 WebSphere Liberty Batch 中配置事务超时?

    的作用是什么javax transaction global timeout 我是否需要实施检查点 超时 中的方法检查点算法 服务器配置级别有什么东西吗 它如何与应用程序级别的设置进行交互 2016年12月2日编辑 重新设计并解释了为应用程
  • Jetty 提供静态内容所需的最少文件集?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 使用 JPA 标准的“不在”约束

    我正在尝试写一个NOT IN约束使用JPA Criteria 我尝试过这样的事情 builder not builder in root get property1 虽然我知道这行不通 在上面的语法中 如何添加集合 列表property1会
  • 异步不适用于控制器的抽象超类方法

    我有一个BaseRestControllerRest 控制器扩展的类 它有一个我想异步运行的方法 public abstract class BaseRestController Async someThreadPoolTaskExecut
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 如何在不下载子项的情况下从 Firebase 获取子项密钥?

    我有一个 Firebase 数据库 其中的节点 items 有很多子项 我想导入子项键的列表 由于每个子项都包含相当多我对此不感兴趣的数据 因此我想仅下载子项密钥 以最大程度地减少传输的数据量 为了便于说明 假设我有以下数据结构 然后我想获
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • 如何将 printStackTrace() 中的异常写入 Java 中的文本文件?

    我需要用 Java 捕获文本文件中的异常 例如 try File f new File catch FileNotFoundException f f printStackTrace instead of printing into con
  • 请解释为什么Java和C对此代码给出不同的答案

    public class Test public static void main String args int i 10 i i System out println value of i is i 输出是 10 当我在中执行类似的代码
  • Java编程编译jar

    我有一个文本文件中的java源代码 必须在源代码中输入一些自定义的硬编码变量 然后将其转换为 jar 这是可行的 但是当我运行 jar 时 找不到 Main 类 当我用 WinRAR 解压 jar 文件时 我似乎找不到错误 当我通过 cmd

随机推荐

  • 术语:前向声明与函数原型

    对我来说 使用 C 编程语言时这些术语本质上是同义词 在实践中 我可能更喜欢文件内原型的 前向声明 而不是通过头文件包含的原型的 函数原型 但当你考虑预处理后会发生什么时 即使这也是人为的区别 也许我错过了一些东西 对于何时使用一个术语与另
  • 解构 Open Layers 3 地图

    所以 我使用 Open Layers 3 和 Ember js 来制作仪表板 并且我已经动态加载地图 但我希望它在我离开路线时被销毁 我发现的唯一东西是 map destroy 但它是针对旧版本的API 新版本中似乎没有 进入地图页面几次后
  • 取消设置 git 配置

    我在 Mac 上使用 FileMerge 来查看差异 并设置为 git config global diff external bin git diff cmd sh 现在我不想再使用 FileMerge 如何恢复到之前的默认设置 Use
  • Zsh 无法正确自动完成我的 ssh 命令

    我在 ssh 自动完成方面遇到一些问题 我希望我的 zsh 在我的 ssh config 文件上自动完成 但到目前为止它只对 etc hosts 文件执行此操作 我发现如何通过添加此配置来不使用主机文件 zstyle completion
  • valgrind - 地址 ---- 是分配大小为 8 的块后的 0 字节

    首先 我知道similar已提出问题 但是 我想问一个关于真正原始 C 数据类型的更一般的简单问题 所以就是这样 In main c我调用一个函数来填充这些字符串 int main int argc char argv char host
  • 有没有API可以从wiki页面获取图像

    我想从维基百科页面获取主图像 我有所有维基百科实体名称 我从中创建维基链接并从该页面获取主图像 我尝试过 https github com richardasaurus wiki api https github com richardas
  • 嵌套的纯函数仍然是纯函数吗?

    根据定义 一个纯函数是纯的 如果 给定相同的输入 将始终返回相同的输出 不产生任何副作用 不依赖于外部状态 所以这是一个纯函数 function foo x return x 2 foo 1 2 foo 2 4 foo 3 6 这也将是一个
  • Angular 6 - 材质文本框浮动占位符不起作用

    我想使用 Angular 6 Material UI 组件来提供更高级的外观和感觉 我在测试程序下运行 但 mat 输入没有提供那种外观和感觉 参考 https material angular io components input ov
  • 有没有办法在 iOS 12.2 的 PWA 中使用 mailto: 或 message: 方案?

    我使用 Ionic 4 构建了一个 PWA 它有一个 联系 按钮 其中包含使用 mailto 方案的简单 href a href Contact a 当从主屏幕启动 PWA 时 这用于打开 iOS 12 1 中的本机邮件应用程序 自从我更新
  • 如何获取和/或覆盖 Mac OSX 中窗口的最小尺寸

    我想调整我的机器上的任何窗口的大小 这是我使用 AppleScript 完成的 使用图形用户界面脚本 http www macosxautomation com applescript uiscripting index html 该脚本类
  • 如何计算 JSON 数据中变量的总和?

    我编写了一个项目 其中字符串以相反的方式返回 PostMapping reverse public String reverseList RequestBody String string List
  • 关于Android NDK libc++ libc++_shared、libstdc++的困惑

    我在尝试使用 Android NDK 23 23 1 7779620 构建一个简单的 C 库时感到非常困惑 我正在使用 CMake 这是一个非常简单的程序 CMakeLists txt cmake minimum required VERS
  • Flex:如何创建一个全新的组件?

    我想为 Flex 开发一个网络图形应用程序 想象一下将节点放置在 Canvas 上并用链接将它们连接起来 节点应具有可编辑文本和其他 UI 组件 我试图找到从头开始创建全新 UI 组件的示例 但我所能找到的只是扩展现有组件的琐碎示例 例如
  • 将数字排列成最大数 - 算法证明

    有众所周知的算法问题 http www programcreek com 2014 02 leetcode largest number java 给定数字数组 例如 1 20 3 14 在这种情况下 以尽可能形成最大数字的方式排列数字32
  • 有 ASP.Net 基准测试工具吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想测量 Net 应用程序的性能 特别是在服务器中运行时 ASP Net 中的 Web 应用程序 我需
  • 日期选择器给出的时间不是异常之间的时间

    我正在使用日期选择器 想要将最小日期设置为今天 将最大日期设置为一年后的今天 我这样做是这样的 datePickerDialog getDatePicker setMinDate System currentTimeMillis 1000
  • 无法在 React 输入文本字段中输入内容

    我正在尝试我的第一个 React js 但很早就被难住了 我有下面的代码 它将搜索表单呈现为 div div 但在搜索框中输入内容却没有任何作用 大概是在传递 props 和 state 的过程中缺少了一些东西 这似乎是一个常见的问题 但我
  • 如何计算图像中“绿点”的数量?

    你好 我有一堆图像 让我们假设它们都具有相同的大小 图像有黑色背景和一些准圆形绿点 代表荧光 我必须计算金额 百分比 每个图像的荧光 IE 绿点的面积 知道如何做到这一点 例如在 Java 中吗 这是图像处理中的一个标准问题 称为图像分割
  • 为什么 Sinks.many().multicast().onBackPressureBuffer() 在订阅者之一取消订阅后完成以及如何避免它

    我在使用时遇到了我不明白的行为Sinks Many
  • 关于Java中初始化块的一些问题

    您主要在哪里使用初始化块 您可以使用它们为静态实例变量赋值吗 这与使用构造函数分配有什么不同 我的书说初始化块是在 类加载 时执行的 加载类是什么意思 附加问题 哪个更好 class static final instance variab