Java中静态代码块的用法

Java中静态代码块的用法

  1. java静态代码块 静态方法 区别
    一般情况下,有些代码必须在项目启动的时候就执行,需要使用静态代码块,它是自动执行的;
    需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,是在被调用的时候才执行的,静态方法在类加载的时候就已经加载,可以使用类名直接调用
    使用静态方法时注意
    1)在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员 :::因为对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
    2)静态方法不能以任何方式引用this和super关键字。
  2. 静态代码块的初始化顺序
 class Parent{ 
    static String name = "hello"; 
    { 
        System.out.println("parent block"); 
    } 
    static { 
        System.out.println("parent static block"); 
    } 
    public Parent(){ 
        System.out.println("parent constructor"); 
    } 
} 

class Child extends Parent{ 
    static String childName = "hello"; 
    { 
        System.out.println("child block"); 
    } 
    static { 
        System.out.println("child static block"); 
    } 
    public Child(){ 
        System.out.println("child constructor"); 
    } 
} 

public class StaticIniBlockOrderTest { 
    public static void main(String[] args) { 
        new Child();//语句(*) 
    } 
}

打印的顺序是
parent static block
child static block
parent block
parent constructor
child block
child constructor
原因:
首先看父类里面有没有静态代码块,如果有,它会先执行父类里面静态代码块的内容,当父类的静态代码块内的内容执行完毕之后,再去执行子类的静态代码块;再看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,再去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法

注意
子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法,如果父类没有不带参数的构造方法,那么子类必须用super关键字来调用父类带参数的构造方法,否则编译不能通过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值