随笔 - 79,  文章 - 0,  评论 - 1,  阅读 - 45668

静态代码块的使用

示例一:

复制代码
public class StaticTest03{
    static{
        System.out.println("A");
    }
    static{
        System.out.println("B");
    }
    public static void main(String[] args){
        System.out.println("hello");
    }
    static{
        System.out.println("C");
    }
}
复制代码

执行结果:

静态代码块优先于main方法执行,在类加载时执行,只执行一次(这一点不同于构造方法,不用在每次创建对象时执行);
静态代码块自上而下的执行
具体的业务中:
可以把记录日志的代码写到静态代码块中,只要时类加载了,记录类加载的信息

 示例二:

复制代码
public class StaticTest04{
    static int i = 12;     //静态变量
    int j = 11;    //实例变量,在调用构造方法时才会开辟内存空间
    static{
        System.out.println("i = " + i);   //静态代码块可以直接访问静态变量,都是在类加载的时候执行;
        //System.out.println("j = " + j);  //错误:无法从静态上下文中引用非静态 变量 j
        System.out.println("x = " + x);    //错误: 非法前向引用
    }
    static int x = 21;
    public static void main(String[] args){
        System.out.println("main method");
    }
}
复制代码

结论:

1. 静态代码块可以直接访问静态变量,都是在类加载时执行;

2. 静态代码不能直接访问实例变量,实例变量是在构造方法调用时开辟内存空间,和静态代码不在同一时期;

3. 静态代码块执行遵循自上而下的顺序执行,在静态代码块下的变量,不能直接访问;

实例代码块:

示例:

复制代码
public class InstanceTest{
    public static void main(String[] args){
        new InstanceTest();
        new InstanceTest();
        new InstanceTest("str");
        new InstanceTest("str");
    }
    {
        System.out.println("实例代码块");       //实例代码块
    }
    public InstanceTest(){
        System.out.println("无参数构造函数");
    }
    
    public InstanceTest(String a){
        System.out.println("有参数构造函数");
    }
}
复制代码

 

结论:

 1. 实例代码块的格式是大括号内加代码片段;

 2. 实例代码块在每次创建对象调用构造函数之前调用;

 3. 实例代码块可能使用的场景,如果有多个构造函数,且多个构造函数前面的代码片段相同,可以考虑把这些相同的片段写到实例代码块中;

 

posted on   homle  阅读(211)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示