Java代码块

package cn.tedu.oop;

public class TestBlock {
    public static void main(String[] args) {
        //7.创建对象进行测试
        /*1.在创建对象之前,会先自动执行静态代码块,而且此静态代码块只执行一次
        * 2.每一次创建对象时都会调用构造代码块与构造方法,构造代码块先执行*/
        Person p=new Person();
        Person p2=new Person();//再次创建对象,静态代码块也不会执行了,只执行一次
        /*3.当对象调用方法时,如果方法里有局部代码块,局部代码块才会呗出发*/
        p.sleep();
    }
}

//1.抽象封装形成一个Person类
class Person{
    //2.创建静态代码块
    /*静态代码块:
    * 位置:类里方法外
    * 触发时机:静态代码块也是静态资源,随着类的加载而加载,优先于对象加载,并且只加载一次
    * 作用:用于加载一些需要第一时间就加载的资源
    * */
    static {
        System.out.println("I am 静态代码块~");
    }
    //3.创建构造代码块
    /*构造代码块:
    * 位置:类里方法外
    * 触发时机:创建对象时触发,而且优先于构造方法 执行
    * 作用:用于提取所有构造方法的共性功能*/
    {
        System.out.println("我是构造代码块~");
    }
    //4.创建构造方法
    /*与类同名,且没有返回值类型的方法,用于创建对象,在创建对象时触发*/
    public Person(){
        System.out.println("我是构造方法");
    }
    //5.创建普通方法
    public void sleep(){
        System.out.println("I am 普通方法");
        //6.创建局部代码块
        /*局部代码块
        * 位置:方法里
        * 执行时间:调用本方法时触发
        * 作用:用来控制变量的作用范围越小越好*/
        {
            System.out.println("I am 局部代码块");
        }
    }
}

代码块
1.静态代码块
位置:类里方法外,格式:static()
执行时机:静态代码块也是静态资源,随着类的加载而加载,优先于对象加载,并且只加载一次
作用:用于加载一些需要第一时间就加载并且只加载一次的资源
2.构造代码块
位置:类里方法外,格式:{ }
执行时机:创建对象时触发,优先于构造方法执行
作用:用于提取所有构造方法的共性功能
3.局部代码块
位置:方法里
执行时机:调用当前所处方法时才触发
作用:用来控制变量的作用范围,变量的作用范围越小越好
4.执行顺序:静态代码块->构造代码块->构造方法【创建好对象】->调用局部代码块所处的普通
5.为什么是这样的顺序呢?
静态代码块它也是静态资源,静态资源随着类的加载而加载,优先于对象的创建
静态资源只加载一次,并且一直存在,直到类消失,它才会消失
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值