2020-08-19 static

一、static:

  静态的,static修饰的东西会随着字节码文件优先于类加载进内存
  

作用:

1.修饰方法:

    静态方法,不需要进行实例化就可以直接通过类名调用于类不属于对象,一般出现在工具类中,只能调用静态属性或方法   

2.修饰属性:

    静态属性,不需要进行实例化就可以直接通过类名调用于类不属于对象,所有对象共享一份数据   

3.修饰代码块:

    静态代码块,在类第一次被使用的时候会执行,仅执行一次先于构造代码块与构造方法,一般在连接数据库的时候使用造代码块在对象每次创建的时候均会执行   
对象创建执行顺序:
    静态构造代码块>构造代码块>构造方法

主方法

public class Main {
    public static void main(String[] args) {
        Static sta = new Static("菠萝");
        System.out.println("对象创建执行顺序:静态构造代码块>构造代码块>构造方法");
        System.out.println("有多个静态构造代码块的执行顺序:从上到下顺序执行");
        System.out.println("有多个构造代码块的执行顺序:从上到下顺序执行")}
}

package static_text;

public class Static {  
    //属性
    String name;
    //无参构造方法
    public Static(){
        System.out.println("默认构造方法");
    }
    //有参构造方法
    public Static(String name) {
        this.name = name;
        System.out.println(name);
    }
    //多个构造代码块
    {
        System.out.println("构造代码块3");
    }
    {
        System.out.println("构造代码块1");
    }

    //多个静态构造代码块
    static {
        System.out.println("静态构造代码块3");
    }
    static {
        System.out.println("静态构造代码块1");
    }
    static {
        System.out.println("静态构造代码块2");
    }
    {
        System.out.println("构造代码块2");
    }
}

结果:

静态构造代码块3
静态构造代码块1
静态构造代码块2
构造代码块3
构造代码块1
构造代码块2
菠萝
对象创建执行顺序:静态构造代码块>构造代码块>构造方法//写这一句话是为了加强记忆
有多个静态构造代码块的执行顺序:从上到下顺序执行
有多个构造代码块的执行顺序:从上到下顺序执行	

二、构造代码块

1.格式:

java类中使用{}声明的代码块(和静态代码块的区别是少了static关键字)
{
        System.out.println("构造代码块3");
    }

2.执行时机

构造代码块在创建对象的时候被调用,每创建一次对象都会调用一次,但是优先于构造函数执行,需要注意的是,听名字我们就知道,构造代码块不是优先于构造函数执行的,而是依托于构造函数,也就是说,如果你不实例化对象,构造代码块是不会执行的。

3.构造代码块的作用:

    (1)和构造函数的作用类似,都能够对象记性初始化,并且只要创建一个对象,构造代码块都会执行一次。但是反过来,构造函数则不会再每个对象创建的时候都执行(多个构造函数的情况下,建立对象时传入的参数不同则初始化使用对应的构造函数)     (2)利用每次创建对象的时候都会提前调用一次构造代码块特性,我们做诸如统计创建对象的次数等功能。

三、静态构造代码块

1.格式:

在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块:
public class CodeBlock{
     static{
        System.out.println("静态代码块");  
}      
}

2.执行时机

    静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,就会按照书写的顺序执行。

3.静态代码块的作用:

    一般情况下,如果有些代码需要在项目启动的时候执行,这时就需要静态代码快,比如一个项目启动需要加载很多配置文件等资源,就可以都放在静态代码块中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值