JAVA - 深入JAVA 虚拟机 3
类的初始化时机
package practise; class Parent{ static int a =3;
static{ System.out.println("Parent static block");
}
}
class Child extends Parent
{
static int b = 4;
static{ System.out.println("Child static block");
}
}
public class Test4 { static{ System.out.println("Test4 static block");
}
public static void main(String[] args) { System.out.println(Child.b); }
} Result:
Test4 static block
Parent static block
Child static block
4
package practise; class Parent5{ static int a =3;
static{ System.out.println("Parent5 static block");
}
}
class Child5 extends Parent5
{
static int b = 4;
static{ System.out.println("Child5 static block");
}
}
public class Test5 { static{ System.out.println("Test5 static block");
}
public static void main(String[] args) { Parent5 parent = new Parent5(); System.out.println(Parent5.a);
System.out.println(Child5.b); }
} Result:
Test5 static block
Parent5 static block
3
Child5 static block
4 程序中对子类的“主动使用”会导致父类被初始化;但对父类的“主动”使用并不会导致子类
初始化。
调用 ClassLoader类的loadClass方法加载一个类,并不是对类的主动使用,不会导致类的初始化。
package practise; class C{ static{ System.out.println("Class C");
}
} public class Test6 {
public static void main(String[] args) { ClassLoader loader = ClassLoader.getSystemClassLoader(); try {
Class<?> clz = loader.loadClass("practise.C");
System.out.println("----------------");
clz = Class.forName("practise.C"); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} Result:
----------------
Class C
JAVA - 深入JAVA 虚拟机 3的更多相关文章
- Android JNI c/c++调用java 无需新建虚拟机
近期通过研究SDL源码 得出android JNI c/c++调用java 无需新建虚拟机: 具体步骤如下 第一步获得:两个参数 JNIEnv和jclass void Java_com_Test_A ...
- JAVA面试-java虚拟机
1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的. 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Ja ...
- Java之Java程序与虚拟机
Java为什么要在虚拟机中运行 简单的来说,Java作为一门高级程序语言,语法复杂,抽象度高,不能直接翻译为机器码在机器上运行,所以设计者就设计了虚拟机,通过编译器将Java程序转换成虚拟机所能识别的 ...
- atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe exe4j vs nativej 1. step1读取配置文件 1 1.1. regular mode . ...
- java中JVM虚拟机内存模型详细说明
java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03| 分类: JAVA | 标签:java jvm 堆内存 虚拟机 |举报|字号 订阅 JVM的内部结构 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...
- 图说Java —— 理解Java机制最受欢迎的8幅图
原文链接: Top 8 Diagrams for Understanding Java 翻译人员: 铁锚 翻译时间: 2013年10月29日 世间总是一图胜过千万言! 下面的8幅图来自于 Progr ...
- [Java][20160707]Java语言介绍
Java最早的名称叫"oak"后来改名叫"Java". Java最早是属于"Sun"公司的, 后来被"Oracle"公司 ...
- 【Java】Java XML 技术专题
XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...
随机推荐
- Greys学习笔记(未完待续)
Greys介绍 greys-anatomy是一个Java线上诊断工具,取名来自美剧<实习医生格雷>,由菜鸟-杜琨同学开发维护.比我们常用的脚本工具btrace提供更多的功能,greys采用 ...
- linux 命令(alias , unalias , install ,ar , arch ,uname )
https://linux.die.net/man/ http://man.linuxde.net/ user commands 1.alias [ˈālēəs]:别名 alias --help al ...
- IIS的安装与设置(windows版本)
IIS,全英文名称:Internet Information Services(互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务.IIS的功能很多,如编辑 ...
- nodejs集成sqlite
正在物色node上面的轻量级嵌入式数据库,作为嵌入式数据库的代表,sqlite无疑是个理想的选择方案.npm上集成sqlite的库主要有两个——sqlite3和realm. realm是一个理想的选择 ...
- java基础(五章)
一. 调试 步骤1:设置断点(不能在空白处设置断点) 步骤2:启动调试 步骤3:调试代码(F6单步跳过)笔记本Fn+F6(F5) 步骤4:结束调试 掌握调试的好处? l 很清晰的看到, ...
- MongoDB--数据库与Collection注意事项
<h2> <strong>注意事项:</strong></h2>1.数据库名注意应该全部小写,不能包含空格,最大长度为64K名称<br /& ...
- SQL Server 2012 酸爽的安装体验
电脑上已经安装了SQL Server 2008 R2,要想安装SQL Server 2012,必须先将已安装的SQL Server 2008 R2 安全卸载,否则安装过程中会报错! 使用到的卸载软件有 ...
- kubernetes 概览
kubernetes 核心数据 (存储于ETCD 有数据变化通知的功能(watch-dog)) kubernetes 设计综述 (中英文对照)(http://www.oschina.net/trans ...
- Java学习笔记--动态代理
动态代理 1.JDK动态代理 JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy ...
- 小程序之发起请求 wx.request(object)的坑
这是官方的API,然后官方的实例中 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { ...