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 可以说明构造代码块内容是优先于构造函数执行的。

    总结如下:

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

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

  • 相关阅读:
    【Leetcode_easy】961. N-Repeated Element in Size 2N Array
    【Leetcode_easy】953. Verifying an Alien Dictionary
    【Leetcode_easy】949. Largest Time for Given Digits
    【Leetcode_easy】944. Delete Columns to Make Sorted
    【Leetcode_easy】942. DI String Match
    【Leetcode_easy】941. Valid Mountain Array
    【Leetcode_easy】938. Range Sum of BST
    【Leetcode_easy】937. Reorder Log Files
    【Leetcode_easy】933. Number of Recent Calls
    【Leetcode_easy】929. Unique Email Addresses
  • 原文地址:https://www.cnblogs.com/mark5/p/11069644.html
Copyright © 2011-2022 走看看