zoukankan      html  css  js  c++  java
  • 静态代码块和构造代码块的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CronousGT/article/details/78390933
    package gt;

    /**
    * Created by Cronous on 2017/10/29.
    * 静态代码块和构造代码块的区别
    */
    public class day01 {

    public static void main(String[] args){
    Person p1 = new Person("tom");
    Person p2 = new Person("jerry");
    p1.sayHello();
    p2.sayHello();
    }
    }

    class Person{
    private String name;
    static int i = 2;//静态变量
    Person(){}
    Person(String name){
    this.name = name;
    }
    //静态代码块
    static{
    System.out.println("进来了!");
    //这里我们可以对类1进行初始化操作,比如修改静态变量值
    i = i + 1;
    }
    public void sayHello(){
    System.out.println("name = " + name + " ,i = " + i);
    }
    }
    控制台输出如下:

    进来了!
    name = tom ,i = 3
    name = jerry ,i = 3

    我们可以根据控制台的输出了解到,static代码块部分作用于类,它只是执行一次,用于类的初始化,这里我们使用了静态变量做了个例子,我们在初始化的时将

    i 的值初始化为 3,之后所有创建的对象i的值都是一样的。

    我们再看看构造代码块

    package gt;

    /**
    * Created by Cronous on 2017/10/29.
    * 静态代码块和构造代码块的区别
    */
    public class day01 {

    public static void main(String[] args){
    Person p1 = new Person("tom");
    Person p2 = new Person("jerry");
    //p1.sayHello();
    //p2.sayHello();
    }
    }

    class Person{
    private String name;
    Person(){}
    Person(String name){
    this.name = name;
    }
    //构造代码块
    {
    cry();
    }
    public void cry(){
    System.out.println("哇哇哇!!!" + name);
    }
    public void sayHello(){
    System.out.println("name = " + name );
    }
    }
    这里我们看到我们将p1.sayHello()和p2.sayHello()全部注释掉,发现控制台打印如下:
    哇哇哇!!!null
    哇哇哇!!!null

    说明每个对象初始化都会先调用构造代码块中的内容,用于对象的初始化,并且通过 name = null 可以说明构造代码块内容是优先于构造函数执行的。

    总结如下:

    静态代码块作用于类,主要用于类的初始化操作,并且只执行一次;

    构造代码块作用于对象,主要用于对象的初始化操作,只要有对象创建都会执行,并且优先级由于构造函数;

  • 相关阅读:
    VS2010的新特性:3.新要害词 Dynamic
    VS2010的新特性:1.可选参数
    VS2010的新特性:4.简化了对 Office API 对象的访问
    VS2010的新特性:2.命实参数
    Not beside my body,but inside my heart!
    Tears...
    首乘“子弹头”列车
    What doesn't kill me makes me stronger!
    HongKong Business Trip
    胃部不适,原来好辛苦!
  • 原文地址:https://www.cnblogs.com/mark5/p/11069644.html
Copyright © 2011-2022 走看看