为什么要使用静态初始化块?| Java Debug 笔记

简介: 为什么要使用静态初始化块?| Java Debug 笔记

前言

Java开发者,初学时,必然会学到静态初始化块这个概念。那么,静态初始化块,到底是什么呢,我们遇到了一个问题或者疑问,我们将要通过这个问题,来叙述静态初始化块的内容。

问题复现

其实遇到这个问题,估计是初学者必须遇到的问题。

对于大多数初学者来说,都会了解到静态初始化块是用来为静态成员设置值。

但是,其实大多数人不明白,为何会使用到这个静态初始化块。

比如,我们声明了一个没有分配值得静态成员。然后写几行静态初始化块,来进行变量赋值,值分配。

所以,我们很疑惑,为什么使用static{...}这种代码。

而且,我们很大程度上不明白,static{...}{...}的区别

问题解决

首先我们来先讲一下非静态初始化块是怎么回事。

{
    // Do Something...
}

静态初始化块仅会被执行一次,非静态初始化块会在每次对象创建时,都会进行创建。

例如:

public class Test {
    static{
        System.out.println("Static");
    }
    {
        System.out.println("Non-static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
        Test t2 = new Test();
    }
}

方法执行,输出以下内容

Static
Non-static block
Non-static block

大概就是这个样子的,我们很好的看出来,他们之间的区别

那么,为啥要写这个呢。

很多原因,写这个是因为这个特点。比如

static {
    try {
        Class.forName("com.example.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        throw new ExceptionInInitializerError("Cannot load JDBC driver.", e);
    }
}

数据库的连接,肯定一次就解决了,其他的就不用了

总结

对于这个java概念,我们很好的熟悉了。那么,更应该熟悉的是我们对于学习时的方式方法。多结合例子,相信会有很好的帮助


目录
相关文章
|
1月前
|
前端开发 Java 图形学
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
[笔记] 疯狂JAVA讲义(第3版)第11章 AWT编程
|
1月前
|
Java 开发者
Java中的异常处理:深入理解try-catch块
【6月更文挑战第15天】在Java编程中,异常处理是一项基本而重要的技能。本文将深入探讨try-catch块的使用,以及如何有效地处理和预防程序中可能出现的异常情况。我们将通过具体的例子和代码片段,详细解析try-catch块的工作原理,以及如何在程序设计中合理地应用这一机制。
18 4
|
8天前
|
设计模式 SQL 安全
Java面试题:设计一个线程安全的内存管理器,使用观察者模式来通知所有线程内存使用情况的变化。如何确保在添加和移除内存块时的线程安全?如何确保任务的顺序执行和调度器的线程安全?
Java面试题:设计一个线程安全的内存管理器,使用观察者模式来通知所有线程内存使用情况的变化。如何确保在添加和移除内存块时的线程安全?如何确保任务的顺序执行和调度器的线程安全?
11 0
|
1月前
|
Java 数据库连接
Java中的异常处理:理解try-catch块
【6月更文挑战第14天】在Java编程中,异常处理是一个不可或缺的部分。本文将深入探讨Java中的异常处理机制,特别是try-catch块的工作原理和使用方法。我们将通过实例来理解如何捕获和处理异常,以及如何在代码中有效地使用try-catch块。
|
1月前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
1月前
|
Java 程序员 API
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
|
1月前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
21 1
|
1月前
|
Java 开发者
Java中的异常处理:深入理解try-catch块
【6月更文挑战第13天】在Java编程中,异常处理是一项至关重要的技能。本文将深入探讨try-catch块的工作原理,以及如何在代码中有效地使用它们来处理可能出现的错误和异常情况。我们将通过实例来展示如何捕获和处理不同类型的异常,以及如何使用finally块来确保资源的正确释放。无论你是Java初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
21天前
|
Java BI C#
技术笔记:SM4加密算法实现Java和C#相互加密解密
技术笔记:SM4加密算法实现Java和C#相互加密解密
15 0
|
21天前
|
Java Maven Python
技术笔记:Lombok介绍、使用方法和总结
技术笔记:Lombok介绍、使用方法和总结
19 0