5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别

构造代码块:
  在类中定义可以给所有对象进行初始化。
局部代码块:
  在方法中定义属性的生命周期。
静态代码块:
  在类中定义用于给类调用时属性的初始化

构造函数与构造代码块的区别:
  构造函数是给对应的对象进行针对性的初始化。
  构造代码块是给所有对象进行初始化

代码如下:

public class Demo {
    private static  int age;
    private static  String name;
    //静态代码块:给类的属性进行初始化
    static{
        age = 10;
        name = "旺财";
    }
    //构造代码块:给所有的对象初始化定义在类中方法外。
    {
        show();
    }
    public Demo(int age,String name){//有参构造函数
        Demo.age =age;
        Demo.name = name;
    }
    public Demo(){//无参构造函数
        
    }
    public void show(){ //普通函数
        //局部代码块:定义属性的生命周期
        {
            char sex = '男';//变量sex出了{}后就会被销毁
            System.out.println("sex="+sex);
        }
        Demo.name = "张三";
    }
    public static void main(String[] args) {
        /*当有静态代码块构造代码块构造函数时程序执行流程
         * 1.类被调用或创建实例时会执行静态代码块进行初始化执行后age=10 name=旺财。
         * 2.创建实例会执行构造代码块调用show方法执行后sex = 男 ,age不变,name = 张三。
         * 3.调用有参构造函数传入参数执行后age = 50,name=姚明。
         * 执行顺序为:
         * 1、静态代码块 :给类的属性进行初始化。
         * 2、构造代码块:给所有的对象进行初始化。
         * 3、有参或无惨构造(根据实例来定):给指定的对象进行初始化。
         * 结果为:sex=男 注意这个是在构造代码块中输出的
         *          50    姚明
         * */
        Demo d = new Demo(50,"姚明");
        System.out.println(d.age+"	"+d.name);
    }
}
原文地址:https://www.cnblogs.com/hcl22/p/6374752.html