总结类体中的内容及其执行的先后顺序(学习中途总结)

本文详细解析了Java类的加载过程,包括静态代码块、实例代码块、构造方法的执行顺序,以及静态和实例变量的初始化。通过示例代码展示了在不同场景下各部分的执行逻辑,帮助理解Java内存区域和方法区的工作原理。
摘要由CSDN通过智能技术生成
class 类体中内容{
//    静态代码块     类加载的时候执行,并且只执行一次,执行时机先于主方法
//    实例代码块     在构造方法执行之前执行,构造方法执行一次,实例代码块就执行一次

//    静态变量    在类加载时初始化 存在于方法区内存 使用"类名."来访问
//    实例变量    在创建java对象(构造方法执行时)时初始化 存在于堆内存java对象内部 使用"引用."来访问

//    静态方法    使用"类名."来调用
//    实例方法    使用"引用."来调用

//    主方法(入口)
//    构造方法    用来创建java对象  使用关键字"new"来调用

    /**
     * 各种方法和代码块在类加载的时候都存放在方法区内存中,在执行的时候在栈中为其分配内存(压栈),执行结束后弹栈
     * 静态代码块的执行与静态变量的初始化没有先后顺序 它们按照自上而下的顺序执行
     */
    /*
    执行顺序分析
        1、首先是静态代码块,它优先于主方法先执行,并且只执行一次,又因为静态代码块有两个,按照由上到下的顺序(1 8)
        2、然后是主方法执行,在主方法里,代码也是按照由上到下的顺序执行,所以输出(2 )
        3、这时开始执行无参构造方法,而实例代码块的执行先于构造方法,所以输出(7 5 3 )
        4、到此开始执行有参构造,实例代码块的特点是每次构造方法执行,他都先执行一次,所以输出(7 6 4 )
        为此最后的输出结果是:1 8 2 7 5 3 7 6 4 
     */
    //属性
    int i;
    //静态代码块
    static {
        System.out.print("1 ");
    }
    //主方法
    public static void main(String[] args) {
        System.out.print("2 ");
        new 类体中内容();
        System.out.print("3 ");
        new 类体中内容(111);
        System.out.print("4 ");
    }
    //无参构造方法
    public 类体中内容() {
        System.out.print("5 ");
    }
    //有参构造方法

    public 类体中内容(int i) {
        this.i = i;
        System.out.print("6 ");
    }

    //实例代码块
    {
        System.out.print("7 ");
    }
    //静态代码块
    static {
        System.out.print("8 ");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值