代码块的详细讲解

代码块(静态代码块和构造代码块)

静态代码块

1.为什么要使用静态代码块?
静态代码块中的代码会在类加载JVM时运行,且只会被执行一次
JVM类加载分为5个过程:加载,验证,准备,解析,初始化。
在这里插入图片描述
2.什么时候使用静态代码块?
一般情况下,如果有些代码必须在项目启动时就执行,就需要使用静态代码块。
3.静态对象优于各种代码块以及构造方法,如果一个类中有多个构造对象,按照书写顺序排序。
4.静态代码块中的代码不需要被实例化类就可以被调用,所有静态代码块中无法调用类中的属性。
5.静态块常用来执行类属性的初始化。
6.静态代码块可以定义在类的任何地方中除了方法体中。
原因:静态代码块的存在在类加载的时候就自动进行了,而普通方法和静态方法都是被动调用运行的
7.静态块中定义的变量都是静态变量。
8.静态代码块中不能访问普通变量,普通变量是被实例对象调用的,静态代码块不存在其实例对象,无法调用普通变量。
9.静态代码块的使用格式:
static{…}

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

10.静态块的代码正常只能对静态变量初始化,它在类的初始化就会产生,所以通常是某些常量才会使用,在给静态块中给变量赋值时,先在类中定义一个静态变量,静态变量和静态代码块的运行顺序是根据编写的前后,所有静态变量如果放在静态代码块的后面,就没有意义了,为了避免麻烦都应当把静态变量写在静态代码块的上方.

public class test4 {
    public static void main(String[] args) {
        Dog dog=new Dog();
        System.out.println(Dog.i);
    }
}
class Dog{
    static int i;
    static{
        i=10;
    }
}

构造代码块

1.构造代码块在每创建一次对象时就会被调用。
2.什么时候使用构造代码?
可以用来统计创建对象次数的功能。注意计数的变量应该使用静态变量。

public class test4 {
    public static void main(String[] args) {
        Dog dog=new Dog();
        Dog dog1=new Dog();
    }
}
class Dog{
    static int i=0;
    {
        System.out.println("该类被调用"+(i+1)+"次");
        i=i+1;
    }
}

3.构造代码块优先于构造方法执行,构造代码块的运行又依赖于构造方法,因为不实例化对象构造代码块不会进行,而实例化对象又离不开构造函数。
4.构造代码块在类中定义。
5.构造方法的使用格式:
{…}

public class Dog{
    {
        System.out.println("构造代码块");
    }
}

代码块的执行顺序有:
静态代码块->构造代码块->构造函数->普通代码块

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电脑小白路过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值