Java中的各种代码块的区别

来源:互联网 发布:阴阳师录屏软件 编辑:程序博客网 时间:2024/05/16 00:32

java中代码块有:局部代码块,构造代码块(初始化块),静态代码块

局部代码块存在于类中方法中比如

class test{    public static void main(String[] args){       {  //大括号包裹的局部代码块            int a = 10;        }        System.out.println(a); //运行报错,访问不到a=10    }}

有上面可以看出来局部代码块限定了变量的生命周期,及早在内存中释放,提高了内存利用率(开发用不到,没啥意义。。。)

构造代码块存在于类中方法外比如

 class Student{    private int age;    private String name;    public Student() {      System.out.println("无参构造");   }  //无参构造    public Student(int age,String name) {        this.name = name;        this.age = age;        System.out.println("有参构造");    }    //有参构造    public int getAge(){        return age;    }    public void setAge(int age){        this.age=age;    }    public String getName(){        return name;    }    public void setName(int name    ){    this.name=name;    //下面是构造代码块   {    System.out.println("我是构造代码块");    }}

在创建学生对象的时候会先执行构造代码块

 class Test {    Student s1 = new Student();    System.out.println("-----------------");    Student s2 = new Student(18,"小明");  }输出结果:我是构造代码块无参构造-----------我是构造代码块有参构造

由此可见,每创建一次对象就会执行一次构造代码块,优先于构造函数执行

静态代码块 也是在类中方法外,但是多了个static修饰

class Student{    private int age;    private String name;    public Student() {      System.out.println("无参构造");   }  //无参构造    public Student(int age,String name) {        this.name = name;        this.age = age;        System.out.println("有参构造");    }    //有参构造    public int getAge(){        return age;    }    public void setAge(int age){        this.age=age;    }    public String getName(){        return name;    }    public void setName(int name    ){    this.name=name;    //下面是构造代码块   {    System.out.println("我是构造代码块");    }    //下面是静态代码块    static{    System.out.println("我是静态代码块");    }}
 class Test {    Student s1 = new Student();    System.out.println("-----------------");    Student s2 = new Student(18,"小明");  }输出结果:我是静态代码块我是构造代码块无参构造-----------我是构造代码块有参构造

静态代码块随着类的加载而加载,且只执行一次,用于给类进行初始化,一般用来加载驱动

再看

class Test {    public static void main(String []args){        System.out.println("我是主方法");    }    Student s1 = new Student();    System.out.println("-----------------");    Student s2 = new Student(18,"小明");      static{    System.out.println("我是主方法静态代码块");    }}输出结果:我是主方法静态代码块我是主方法我是静态代码块我是构造代码块无参构造-----------我是构造代码块有参构造

静态代码块还优先于main方法执行哦~

开发中好像很少遇到用这个知识的 ,小白第一次写博客,很多不会,望见谅。

原创粉丝点击