类加载小结1 类加载2 类加载的顺序2.1 加载2.2 链接2.3 初始化2.3.1 各种类型变量的初始化顺序2.4 使用2.5 卸载 1 类加载类加载是将写好的类(也就是文件hello.class)通过jvm加载到内存的过程2 类加载的顺序加载:加载class文件链接:class文件内容是否合法初始化:对类中的类变量(静态变量)和静态代码块初始化使用卸载2.1 加载加载class文件在内存中创
class Parent{
static String name = "hello";
static{
System.out.println("parent block");
}
{
System.out.println("parent static block");
}
# Java静态块的执行时机
Java中的静态块是一种特殊的代码块,它在类加载阶段被执行。静态块被用来初始化类的静态成员变量,以及执行其他需要在类加载时完成的操作。本文将详细介绍Java静态块的执行时机,并提供相关的代码示例。
## 类加载过程
在了解静态块的执行时机之前,我们先要了解类的加载过程。当我们使用一个类时,Java虚拟机会首先尝试加载该类。类的加载过程包括以下几个步骤:
1.
原创
2023-08-26 03:49:32
185阅读
一、概述 我们在谈到java里面static代码块的执行时机的时候,我们都知道是它在类被加载的时候被执行,这种说法没有毛病,但是有误区,因为一个类的加载过程并不是一步就可以完成的。 如果从大的整体上来说这句话没有
转载
2023-09-02 07:11:40
302阅读
1、简单认为JAVA静态代码块在类被加载时就会自动执行 是错误的class MyClass1 {
static {//静态块
System.out.println("static block ");
}
}
public class Main {
Class[] classArray = {
MyClass1.cla
转载
2023-09-22 11:49:24
210阅读
1、代码块︰使用括号括起来的一段代码称为代码块。按照代码块出现的位置以及关键字一共分为以下四种代码块 (1)普通代码块:定义在方法中,直接使用{}括起来的代码块称为普通代码块 ①作用域仅限于当前代码块的内部可见{
{
int x = 10; //x只在当前大括号里有作用,
转载
2023-08-16 19:15:04
35阅读
# Java静态方法块的执行时机
## 1. 流程概述
在Java中,静态方法块是在类加载的过程中执行的一段代码。它在类的初始化阶段执行,且只会执行一次。静态方法块通常用来初始化类的静态变量或执行一些必要的静态操作。以下是Java静态方法块执行的流程图:
```mermaid
journey
title Java静态方法块的执行时机
section 类加载过程
原创
2024-01-02 07:31:23
75阅读
Java中内部类加载时间:一般是只有运到了才会初始化,而不是外部内加载的时候(不管是静态还是非静态内部类)。注意到一个问题:内部类只有是静态的,其内部类中才能有静态属性和静态方法;如果内部类非静态的,其内部类不能有静态属性和静态方法。例子:public class OutClass {
<span style="white-space:pre"> </span>stati
转载
2024-09-23 10:04:40
34阅读
## Java静态代码块什么时候执行
在Java中,静态代码块是一种特殊的代码块,它在类被加载时执行,并且只执行一次。静态代码块通常用于初始化静态变量或执行一些初始化操作。那么静态代码块究竟什么时候执行呢?本文将详细介绍Java静态代码块的执行时机,并提供相应的代码示例。
### 静态代码块的执行时机
静态代码块在类被加载时执行,而类的加载时机有以下几种情况:
1. 创建对象实例:当我们通
原创
2023-09-08 00:03:36
486阅读
Source.java中1 /**
2 * 类的静态代码块在类第一次实例化或调用的情况下执行,且只执行一次
3 *
4 * @author admin
5 *
6 */
7 class A{
8
9 String a="hello";
10 static {
11 System.out.println(B.b);
12
转载
2024-09-19 16:28:39
16阅读
# Java静态代码块什么时候执行
在Java中,静态代码块是一种特殊的代码块,它在类加载时执行,并且只会执行一次。它主要用于在类加载时进行一些初始化操作,比如初始化静态变量或加载静态资源。
## 静态代码块的定义和使用
静态代码块通过`static`关键字和花括号`{}`来定义,在类的声明中可以有多个静态代码块,它们的执行顺序与声明的顺序一致。
```java
public class
原创
2023-07-31 14:30:38
518阅读
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的cl
转载
2024-04-10 08:10:58
52阅读
为了搞清楚这个我们首先要知道一个类想要运行JVM会做哪些事情。1、类装载 采用双亲委派模式加载类,子类会交给父类的classloader去加载,如果父类加载不到自己才会尝试加载。最终功能是将java字节码转换为JVM的class对象。2、链接 将Java二进制代码合
转载
2023-08-28 09:57:30
12阅读
前言: 在看单例模式的时候,在网上找帖子看见其中有一种(IoDH) 实现单例的方式,其中用到了静态内部类,文章中有写到当jvm加载外部类的时候,并没有加载静态内部内这和之前自己想的不一样,特意在网上找了一些帖子总结一下。一、学习前千的疑问: 稍微了解Java虚拟机内的加载过程的步骤,都很清楚,一个类的静态资源、一些常量都是在类加载的时候就被加载金内存中分配空间了,所以我一开始理所当然的以为静态
转载
2024-02-16 09:49:23
53阅读
我们知道java中类的生命周期为装载、连接、初始化、使用和卸载五个过程,如下图所示:1.加载我们编写一个java类的代码,经过编译之后生成一个后缀名为.class的文件,java虚拟机就能识别这种文件。java的生命周期就是class文件从加载到消亡的过程。 关于加载,其实,就是将源文件的class文件找到类的信息将其加载到方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方
转载
2023-12-31 17:40:10
74阅读
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有5种情况必须立即对类进行初始化:第一种:遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还没有进行过初始
转载
2024-01-14 17:33:32
115阅读
目录1.static:静态的2.static可以用来修饰:属性、方法、代码块、内部类3.使用static修饰属性:静态变量(或类变量)4.使用static修饰方法:静态方法4.1 Java中静态方法能否被重写5.static注意点:6.开发中的使用:练习题: 1.static:静态的2.static可以用来修饰:属性、方法、代码块、内部类3.使用static修饰属性:静态变量(或类变量)3.1
转载
2024-07-01 01:14:19
98阅读
一, 静态变量在类加载时被加载加载指的是将类的class文件读入到内存,类加载器会读取class文件,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。二,静态变量在类卸载时被销毁当Sample类被加载、连接和初始化后,它的生命周期就开始了。当代表Sample类的Class对象不再被引用,即不可触及时,Clas
转载
2023-10-17 07:00:49
96阅读
闲暇之余,总结并撸码测试了一下静态代码块、构造代码块、构造方法的执行顺序及需要注意的问题当然,首先大家得知道静态代码块是跟着类的加载而加载的,而构造代码块和构造方法是随着对象的加载而加载的,相比这个问题大家都已经很熟悉了。以下是测试用的一个小Demo,便于更清楚的说明事实: package com.test;
public class Test {
private int num
在 Java 编程中,静态代码块是一种特殊的代码块,通常用于在类加载时初始化一些静态资源或执行一些操作。了解“Java静态代码块什么时候会运行”这一问题,能够帮助开发者更好地掌握类的加载机制和静态初始化流程。本文围绕这一主题,详细描述静态代码块的执行时机及其相关技术细节。
在 Java 中,静态代码块会在以下情况下执行:
1. **类被加载时**:当 JVM 加载这个类时,类的静态代码块会被执