首页 > 编程语言 >java基础:static静态代码块

java基础:static静态代码块

时间:2023-11-05 20:35:05浏览次数:28  
标签:PreCache java 静态 代码 static 执行 加载


在Java中,静态代码块(static block)是在类加载时执行的,而不是在每次创建对象时执行的。当类被加载时,静态代码块会按照在类中出现的顺序被执行一次。这意味着无论创建多少个对象,静态代码块只会执行一次。

具体执行时机如下:

  1. 当类被首次加载时,静态代码块会被执行。类的加载通常发生在使用该类之前,例如创建对象实例、调用静态方法或访问静态变量时。
  2. 静态代码块在类加载过程中只执行一次,也就是说它在整个应用程序生命周期中只执行一次。无论创建多少个类的实例,静态代码块只会在类加载时执行一次。

静态代码块常用于在类加载时进行一些初始化操作,例如初始化静态变量、加载配置文件、进行日志记录等。通过在静态代码块中执行这些操作,可以确保它们在类加载时被执行,而不依赖于对象的创建。

下面是一个示例,展示了静态代码块的执行时机:

public class PreCache {
    static {
        System.out.println("Static block is executed.");
    }

    public static void main(String[] args) {
        PreCache obj1 = new PreCache();
        PreCache obj2 = new PreCache();
    }
}

输出结果:

Static block is executed.

可以看到,在执行 main 方法时,静态代码块会被执行一次,输出相应的信息。无论创建多少个对象实例,静态代码块只会执行一次。

需要注意的是,静态代码块的执行顺序与其在类中的定义顺序有关。如果一个类中包含多个静态代码块,它们会按照在类中出现的顺序依次执行。

总结来说,静态代码块在类加载时执行,并且在整个应用程序生命周期中只执行一次。它常用于在类加载时进行一些初始化操作,不会在每次创建对象时执行。


标签:PreCache,java,静态,代码,static,执行,加载
From: https://blog.51cto.com/zhangxueliang/8195042

相关文章

  • Java21对虚拟线程进行http压测使用不同的GC
    JDK21默认GC是G1.JDK21除了G1外,还可以使用ZGC(Java11预览、Java15正式版),Java21在ZGC基础上继续推出了分代ZGC,目前还是试行阶段。开启ZGC:java-XX:+UseZGC-jarmyapp.jar开启ZGC,并试用分代ZGCjava-XX:+UseZGC-XX:+ZGenerational-jarmyapp.jar以下的对一个启用tomcat......
  • java 模板
    1.添加依赖:<dependencies><!--支持模板--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency></dependencies>注:......
  • java.time.format.DateTimeParseException: Text ‘202310132358‘ could not be pars
    你遇到的问题是由于在解析日期和时间时格式不正确。Java无法解析‘202310132358’这个字符串,因为它不符合Java日期时间格式。Java期望的日期时间格式通常是“yyyy-MM-ddHH:mm:ss”,其中:yyyy是四位数的年份MM是两位数的月份dd是两位数的日期HH是两位数的小时(24小时制)mm是两......
  • java 计算两个日期之间相隔的天数
    在Java8中,你可以使用java.time包中的LocalDate类和Period类来计算两个日期字符串之间相隔的天数。以下是一个示例代码:importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;importjava.time.Period;publicclassDateDifference{publicstaticvoid......
  • java IO模型:AIO(Asynchronous I/O)
    AIO也就是NIO2。Java7中引入了NIO的改进版NIO2,它是异步IO模型。异步IO是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。目前来说AIO的应用还不是很广泛。Netty之前也尝试使用过AIO......
  • java IO模型:BIO(Blocking I/O)
    BIO属于同步阻塞IO模型。同步阻塞IO模型中,应用程序发起read调用后,会一直阻塞,直到内核把数据拷贝到用户空间。在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统的BIO模型是无能为力的。因此,我们需要一种更高效的I/O处理模型来应对更高......
  • java IO流:介绍下阻塞、非阻塞、同步、异步 I/O 的概念
    这里先介绍下阻塞、非阻塞、同步、异步I/O的概念。先来看看阻塞I/O,当用户程序执行read,线程会被阻塞,一直等到内核数据准备好,并把数据从内核缓冲区拷贝到应用程序的缓冲区中,当拷贝过程完成,read才会返回。注意,阻塞等待的是「内核数据准备好」和「数据从内核态拷贝到用户态」这两......
  • java IO设计模式:观察者模式
    NIO中的文件目录监听服务使用到了观察者模式。NIO中的文件目录监听服务基于WatchService接口和Watchable接口。WatchService属于观察者,Watchable属于被观察者。Watchable接口定义了一个用于将对象注册到WatchService(监控服务)并绑定监听事件的方法register。WatchServ......
  • java IO流:字符缓冲流
    ......
  • java基础:对Java集合的理解
    对Java集合的理解  集合是我们在工作中使用频率非常高的组件了。下面的两张图是集合框架的类图结构。TreeSet的本质是TreeMapHashSet的本质是HashMapJava集合是一组用于存储和操作对象的类和接口,提供了各种数据结构和算法的实现,用于解决不同的数据存储和访问需求。Java集合框架位......