码迷,mamicode.com
首页 > 其他好文 > 详细

类的加载

时间:2020-05-31 10:59:45      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:package   str   ext   new   col   ini   父类   color   nbsp   

1.加载
2.连接
(1)校验:
查看字节码的数据是否以“cafe”开头
jdk版本是否可以运行字节码的数据
(2)准备
成员变量赋默认值
常量(final)
(3)解析
String -->String类型对应的class地址
3.初始化<clinit>类初始化
(1)静态变量的显式初始化代码,赋值代码
(2)静态代码块

当一个类初始化时,如果父类没有初始化,则先初始化父类
每一个类只会初始化一次

类的初始化:
(1)main方法所在的类在加载时,直接先初始化
(2)new一个类的新对象
(3)调用该类的静态变量(final除外)和静态方法
(4)使用java.lang.reflect包的方法对类进行反射调用
(5)初始化一个类时,父类初始化
不会导致类的初始化
(1)静态变量(final)
(2)子类访问父类的静态域,Son.name
(3)通过数组定义类引用

package project05;
/*类加载:
1.加载
2.连接
(1)校验:
             查看字节码的数据是否以“cafe”开头
     jdk版本是否可以运行字节码的数据
 (2)准备
              成员变量赋默认值
              常量(final)
 (3)解析
     String   -->String类型对应的class地址
 3.初始化<clinit>类初始化
 (1)静态变量的显式初始化代码,赋值代码
 (2)静态代码块
 
 当一个类初始化时,如果父类没有初始化,则先初始化父类
 每一个类只会初始化一次
 
 类的初始化:
 (1)main方法所在的类在加载时,直接先初始化
 (2)new一个类的新对象
 (3)调用该类的静态变量(final除外)和静态方法
 (4)使用java.lang.reflect包的方法对类进行反射调用
 (5)初始化一个类时,父类初始化
 不会导致类的初始化
 (1)静态变量(final)
 (2)子类访问父类的静态域,Son.name
 (3)通过数组定义类引用
 */


public class test03 {
    static {
        //1.main方法所在的类在加载时,直接先初始化
        //System.out.println("main方法的类初始化");//main方法的类初始化
        
    }
    public static void main(String[] args) {
        //2.new一个类的新对象
        //Father my=new Father();//父类静态代码块--> 父类非静态代码块
        
        //3.调用该类的静态变量(final除外)和静态方法
        //System.out.println(Father.name);//父类静态代码块--> null
        
        //5.初始化一个类时,父类初始化
        //Son son =new Son();//父类静态代码块 --> 子类静态代码块-->  父类非静态代码块
        
        
        
        //1.静态变量(final)
        //System.out.println(Son.hobby);//banana
        
        //2.子类访问父类的静态域
        //System.out.println(Son.name);//父类静态代码块-->zhang
        
        //3.
        Father [] arr=new Father[5];
        
    }
}

class Father{
    public static String name="zhang";
    public static final String hobby="banana";
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类非静态代码块");
    }
}

class Son extends Father{
    static {
        System.out.println("子类静态代码块");
    }
}

 

类的加载

标签:package   str   ext   new   col   ini   父类   color   nbsp   

原文地址:https://www.cnblogs.com/hapyygril/p/12996404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!