Java类的内部代码块大全

x33g5p2x  于2021-10-04 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(324)

1.普通代码块:

类中方法的方法体

public void show(){
        name="h2";
        System.out.println("普通代码块");
    }

2.构造代码块:

构造代码块使用{ } 会在每次创建对象时被调用,

优先于类的构造函数执行。

{
        name="hu1";
        System.out.println("构造代码块");
    }

3.静态代码块:

用static{}包裹起来的代码片段,只会执行一次。

静态代码块优先于构造代码块执行。

static {
        name1="statc_hu1";
        System.out.println("静态代码块");
    }

4.同步代码块:

public void showThread(){
        synchronized (daimk.class){
            name="h2";
            System.out.println("同步代码块");
        }
    }

使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。

5.构造函数

public daimk() {
        this.name=name;
        System.out.println("无参构造函数");
    }

    public daimk(String name){
        this.name=name;
        System.out.println("带参构造函数");
    }

他们的执行顺序

一定要注意执行顺序 比如如果我在静态代码块里使用构造函数那么肯定报错因为调用静态代码块的时候构造函数还没出生,

  1. 静态代码块
  2. 构造代码块
  3. 构造函数
  4. 普通代码块 和同步代码块

完整版案例

public class daimk {
    private  String  name;
    private static String  name1;

    static {
        name1="statc_hu1";
        System.out.println("静态代码块");
    }

    {
        name="hu1";
        System.out.println("构造代码块");
    }
    
    public daimk() {
        this.name=name;
        System.out.println("无参构造函数");
    }

    public daimk(String name){
        this.name=name;
        System.out.println("带参构造函数");
    }

    public void show(){
        name="h2";
        System.out.println("普通代码块");
    }

    public void showThread(){
        synchronized (daimk.class){
            name="h2";
            System.out.println("同步代码块");
        }
    }
    
}
public static void main(String[] args) {
        daimk da=new daimk();
    }

静态代码块
构造代码块
无参构造函数

相关文章

微信公众号

最新文章

更多