`
xuyuanshuaaa
  • 浏览: 393792 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Static静态库看java类装载

阅读更多
//当程序启动时,这段代码(静态块中的)会自动执行,向userDB中存入数据
static
{
for(int i=0;i<10;i++)
{
UserInfo user=new UserInfo();
user.setName("user"+i);
user.setPassword("pwd"+i);
userDB.put(user.getName(), user);
}
}

“静态块”中代码的特点是:在这个类被装载时就会执行,且只执行一次。这意味着“静态块”会先于属性初始化执行,当其他的对象调用Daotools中的方法千,UsuerDB中就已经保存入预设的数据。
分析:
一个类的运行,JVM做会以下几件事情 1、类装载 2、链接 3、初始化 4、实例化;而初始化阶段做的事情是初始化静态变量和执行静态方法等的工作。所以,当Class.forName(args[0],true,off.getClass().getClassLoader());中的true变为false的时候,就是告诉JVM不需再load class之后进行initial的工作。这样,将initial的工作推迟到了newInstance的时候进行。所以,static块的绝对不是什么“只是在类被第一次实体化的时候才会被仅仅调用一次”,而应该是在类被初始化的时候,仅仅调用一次。
分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    HelloNative.lib 用VC编译生成的静态库文件 HelloNative.obj 用VB编译生成的目标文件 HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个实例成员变量 invokeByObject.java 对象实参...

    Java编程中常用修饰词使用方法

    Java 语言中的修饰词可以用来控制成员的访问权限、确保类和方法的不可变性、定义抽象类和抽象方法、调用 native 库、确保浮点计算的精度和可移植性、确保多线程环境中的安全执行等等。正确地使用修饰词可以提高 Java...

    java动态代理机制分析及拓展

    Java 动态代理机制是Java语言提供的一种在运行时创建代理类和代理对象的机制,主要...不过,动态代理仅限于代理接口,对于没有接口的类,或者希望代理final方法或静态方法的情况,就需要寻找其他解决方案,如CGLIB库。

    java虚拟机工作原理

    1. **类装载器子系统**:负责加载`.class`文件,即将Java源代码编译后的字节码加载到JVM中执行。JVM通过类名、类所在的包名及类加载器的实例ID来唯一标识一个类。 2. **执行引擎**:执行字节码,处理本地方法调用。...

    java竞赛题集锦

    Applet是一种嵌入网页中的小型应用程序,为了安全考虑,Java Applet在沙箱环境中运行,这意味着它只能访问客户端的部分资源,如读取客户端文件,但不允许在客户端主机上创建新文件或装载程序库。 5. **容器与构件**...

    java的JNI本地调用

    在Java层面上,首先需要装载本地库。通常的做法是在静态初始化块中使用`System.loadLibrary`方法。 ```java private static final String LIB_NAME = "TestJNI"; static { try { System.loadLibrary(LIB_NAME...

    java修饰词的总结.doc

    初始化函数是在装载类时执行的,而不是在创立实例时执行的。 5. final 修饰词 使用对象:类、方法、字段、变量 介绍:被定义成 final 的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值不允许被修改。...

    java试题及答案(20211008095126).pdf

    4. Applet(A)可以在客户端读取文件,但不能在客户端主机上创建新文件(B),也不能装载程序库(C)或读取客户端部分系统变量(D)。这些限制是出于安全考虑。 5. JFrame(A)是Java中的一个容器构件,用于创建...

    Java调用动态库最简便方法.pdf

    在`org\xvolks\test\SNDPTester.java`中展示了如何传递这类结构体到动态库。 - **JDK 1.5特性**:JNative利用了JDK 1.5的新特性(如枚举、静态导入等),因此该组件在JDK 1.4及更低版本中不可用。 #### 总结 通过...

    5_Java寒假作业.docx

    JDK 中自带一个 JRE,其中还包括 Java 核心类库和 Java 工具。 2. 环境变量 PATH 的作用 环境变量 PATH 的作用是,在编译 Java 文件的时候能够在指定的路径下去找 JDK,方便编译,如果没有 PATH 路径,就只能在 JDK...

    超级有影响力霸气的Java面试题大全文档

    Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。 25、JSP中动态INCLUDE与静态INCLUDE的区别?  动态INCLUDE用jsp:...

    java优化编程

    - **内存分配**:包括静态存储区域(如static变量)、栈(局部变量)和堆(对象实例)。 - **垃圾收集**(Garbage Collector, GC):自动管理堆内存,回收无用的对象以释放空间。 3. **分代复制算法**: - **...

    2011最新整理Java练习题

    - C) 在客户端装载程序库 - D) 读取客户端部分系统变量 **解析**: - **选项D**:正确。为了安全起见,Java Applet受到严格的沙箱限制,不允许直接读取或写入本地文件系统,也不允许加载本地程序库。然而,它们可以...

    全国软件设计大赛预测试卷(java)知识.pdf

    全国软件设计大赛预测试卷(Java)主要涵盖了Java编程的基础知识,包括语言特性、I/O流、事件处理、Applet、面向对象特性、类的静态成员以及循环结构等多个方面。以下是对这些知识点的详细说明: 1. **Java程序并行...

    全国“IT&AT”教育工程技能大赛Java预赛试题B及评分标准.doc

    - 可以读取客户端部分系统变量,但不能读取或创建客户端文件,也不能在客户端装载程序库。 9. **for循环与while循环**: - 两者都可以实现相同的操作,但适用场景略有不同。 - for循环通常用于已知循环次数的...

    全国软件设计大赛预测试卷(java)分享.pdf

    但它可以读取客户端的部分系统变量,并能装载程序库。选项C正确。 5. **Java Swing组件**: - **容器构件**:JFrame是顶级容器,JButton、JPanel和JApplet都是可以在容器中添加的组件。选项A和D不属于容器构件。 ...

Global site tag (gtag.js) - Google Analytics