JAVA静态块加载实例

news/2024/7/19 7:18:00 标签: java, 静态块, static, 类加载

        一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述!    

        调用类的某一个方法时,第一步是类加载。注意!static块,也就是静态块,在类加载的时候就执行了,而且只执行一次,因为不可能进行第二次类加载,从这个意义上说,静态的成员是第一时间执行的!

        实例:

java">package com.bijian.study;

class Singleton {
    
    private static String countStr = null;

    static {
        System.out.println("begin static method(),countStr:" + countStr);
        try {
            Thread.sleep(6000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        countStr = "test";
        System.out.println("after static method(),countStr:" + countStr);
    }

    private Singleton () {}

    public static String getInstance() {
        System.out.println("getInstance() countStr:" + countStr);
        return countStr;
    }
}

public class TestStaticSingleton {
    
    public static void main(String[] args) {

        System.out.println("begin first");
        String a = Singleton.getInstance();
        System.out.println("end first");
        
        System.out.println("begin second");
        String b = Singleton.getInstance();
        System.out.println("end second");
        
        System.out.println(a==b);
    }
}

运行结果:

begin first
begin static method(),countStr:null
after static method(),countStr:test
getInstance() countStr:test
end first
begin second
getInstance() countStr:test
end second
true

更详细的实例: http://blog.sina.com.cn/s/blog_812973c30101lp5k.html

http://www.niftyadmin.cn/n/1318753.html

相关文章

数论专题学习笔记1

1.扩展欧几里得(exgcd) 裴蜀定理:若有一个方程 axbycaxbycaxbyc (a,b,ca,b,ca,b,c 均为整数),当且仅当 ccc 为 gcd(a,b)gcd(a,b)gcd(a,b) 的倍数,x,yx,yx,y 有整数解,且整数解的个数为无限个。 证明&…

野指针问题

什么是野指针?  一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这…

FFT学习笔记

1.什么事FFT?(恼 百度百科传送门 2.为什么要用FFT? 在计算两个多项式相乘的时候,我们要将两个多项式的项数一一对应相乘。 所以计算f(x)∗g(x)f(x)*g(x)f(x)∗g(x) 时,时间复杂度为 O(n2)O(n^2)O(n2) 但是我们可以将函数用另一种表示方法。 总所周…

Weblogic10两种修改端口的方法

一.进入控制台进行修改 1.进入控制台: http://127.0.0.1:7001/console 2.展开左边树菜单 域结构->环境->服务器-->点击AdminServer(管理) 3.修改监听端口 4.点击保存按钮 二.修改配置文件 打开$WEBLOGIC_HOME/user_projects/domains/base_do…

树上莫队学习笔记

众所周知,莫队算法不仅仅能解决序列问题,还能解决树上问题。 当一个问题可以离线做时,我们就可以使用树上莫队算法了(带修另说) 基本思路 一道例题:给一棵树,树上节点都有颜色 col[i]col[i]co…

概率期望学习笔记

概率 定义 Ω\OmegaΩ :样本空间,随机实验得到的所有样本。 A1...nA_{1...n}A1...n​ :发生的事件(即为 Ω\OmegaΩ 的子集)。 P(A)P(A)P(A):事件 AAA 发生的概率。 P(AB)P(AB)P(AB): 事件 AAA…

解决 entity framework 操作非自增主键时报错Field doesn't have a default value

前一篇提到EF在对具有非自增的主键表进行插入时出现 Field merchant_id doesnt have a default value 错误。(地址:http://www.cnblogs.com/tangfd405/p/3155893.html) 解决方法: 在EF实体对应的字段上标注DatabaseGenerated(Dat…

easyTemplate概述与实例

一.概述 在前后端分离的解决方案中,模板起到了重要作用! 在使用Struts或Spring的后端中,使用Freemarker模板作为载体,能够非常有效的实现前后端的分离。  有人或许会认为使用前端模板一样可以实现此效果,而且实现的会…