Java基础巩固系列 类的成员之四:代码块(初始化块)

代码块分为两种:

静态代码块非静态代码块

 

ps:代码块如果有修饰的话,那么只能使用static。

静态代码块:

1.里面可以有输出语句
2.随着类的加载而加载,而且只被加载一次
3.多个静态代码块之间按照顺序结构执行
4.静态代码块的执行要早于非静态代码块的执行
5.静态的代码块中只能执行静态的结构(类属性,类方法)

 

非静态代码块:

 1.可以对类的属性(静态 & 非静态)进行初始化操作,同时也可以调用本类声明的方法(静态 & 非静态)
2.里面可以有输出语句
3.一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行
4.每创建一个类的地下,非静态代码就加载一次
5.非静态代码块的执行要早于构造器

 

代码示例:

public class TestOrder {
    public static void main(String[] args) {
        Order o1 = new Order();
        System.out.println(o1);

        System.out.println();

        Order o2 = new Order();
        System.out.println(o2);
    }
}

class Order {
    private int orderId = 1001;
    private String orderName;
    private static String orderDesc;
    public Order() {
        System.out.println("我是空参构造器");
    }

    //非静态初始化块
    {
        orderId = 1002;
        orderName = "AA";
        System.out.println("我是非静态代码块1");
        orderDesc = "ORDER";
        show();
        show1();
    }

    {
        orderId = 1003;
        System.out.println("我是非静态代码块2");
    }

    //静态初始化块
    static {
        System.out.println("静态代码块2");
        orderDesc = "我是一个Order";
//        orderId = 1001; 不可以
//        show();   不可以
        show1();
    }

    static {
        System.out.println("静态代码块1");
    }


    public Order(String orderName) {
        this.orderName = orderName;
    }

    public int getOrderId() {
        return orderId;
    }

    public void setOrderId(int orderId) {
        this.orderId = orderId;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    @Override
    public String toString() {
        return "Order{" +
                "orderId=" + orderId +
                ", orderName='" + orderName + '\'' +
                '}';
    }

    public void show(){

    }
    public static void show1(){

    }
}

结果:

静态代码块2
静态代码块1
我是非静态代码块1
我是非静态代码块2
我是空参构造器
Order{orderId=1003, orderName='AA'}

我是非静态代码块1
我是非静态代码块2
我是空参构造器
Order{orderId=1003, orderName='AA'}

 

tips:关于赋值操作:

默认的初始化---->显式的初始化或代码块初始化(此处两个按照顺序执行)---->构造器中------>

------------------------------------>(以上是对象属性的初始化过程)---------------------------------------->

----------------------------------->通过方法对对象的相应属性修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值