深入理解java虚拟机(三)(一个类加载器只初始化一次类对象,不同类加载器可以对同一类对象进行初始化)
来源:互联网 发布:淘宝客户投诉电话 编辑:程序博客网 时间:2024/05/22 12:27
class Final{
public static final int x=6/3;//此处x在编译时能计算出值,是编译时的常量,则System.out.println(Final.x);直接输出值,不再执行下面static(前提是final)
static{
System.out.println("Final ");
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println(Final.x);
}
}
//*************************************
2
//======================================
import java.util.Random;
class FinalTest2{
public static final int x=new Random().nextInt(100);//运行时才确定x的值,编译时变量
static{
System.out.println("FinalTest2");
}
}
public class Test3 {
public static void main(String[] args) {
System.out.println(FinalTest2.x);
}
}
//****************************************
FinalTest2
10
//**********************************************************
package com.ygl;
class Parent{
static int a=3;
static {
System.out.println("Parent ");
}
}
class Children extends Parent{
static int b=4;
static{
System.out.println("Children extends Parent");
}
}
public class Test4 {
static {
System.out.println("Test4");
}
public static void main(String[] args) {
System.out.println(Children.b);
}
}
//********************************
Test4
Parent
Children extends Parent
4
//****************************************
package com.ygl;
class Parent2{
static int a=3;
static {
System.out.println("Parent ");
}
}
class Children2 extends Parent2{
static int b=4;
static{
System.out.println("Children extends Parent");
}
}
public class Test5 {
static {
System.out.println("Test5");
}
public static void main(String[] args) {
Parent2 parent;
System.out.println("------------------------");
parent =new Parent2();
System.out.println(Parent2.a);
System.out.println(Children2.b);
}
}
//******************************
Test5
------------------------
Parent
3
Children extends Parent
4
//*******************************************
package com.ygl;
/**
* 只有当程序访问的静态变量或静态方法确实在当前类或当前接口中定义时,才可以认为是对类或或接口的主动使用
* @author lenovo
*
*/
public class Test6 {
public static void main(String[] args) {
System.out.println(Children3.a);
Children3.doSomething();
}
}
class Parent3{
static int a=3;
static {
System.out.println("Parent ");
}
static void doSomething(){
System.out.println("doSomething");
}
}
class Children3 extends Parent3{
static{
System.out.println("Children extends Parent");
}
}
//******************************
Parent
3
doSomething
- 深入理解java虚拟机(三)(一个类加载器只初始化一次类对象,不同类加载器可以对同一类对象进行初始化)
- java 对象初始化和类加载器
- 《深入理解Java虚拟机》:类加载和初始化(二)
- 深入java虚拟机(三)--类初始化
- 深入理解java虚拟机---类加载器
- 深入理解Java虚拟机--类加载器
- 深入理解Java虚拟机:类加载器
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入理解java虚拟机系列文章:类的加载、连接与初始化
- Java虚拟机深入介绍03—-—类加载器类的初始化
- Java对象加载(初始化)顺序
- Jdbc Url 设置allowMultiQueries为true和false时底层处理机制研究
- linux文件系统属性chattr权限-39
- 启动触发器,关闭触发器
- 【LeetCode】292. Nim Game(推理,智力题)
- 哈夫曼编码和哈夫曼树的实现——Pascal实现
- 深入理解java虚拟机(三)(一个类加载器只初始化一次类对象,不同类加载器可以对同一类对象进行初始化)
- Android之图片工具类ImageUtil
- Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
- recovery的一些开发点滴
- 分解质因数(2)
- java项目中常用的分页对象Page
- Oracle数据库概念
- 计算UIBezierPath 路径内、路径上的点
- 技术工程师成长之其中一道