zoukankan      html  css  js  c++  java
  • Java核心(三):代码块的作用

    Java中用{ }括起来的代码段就是代码块,他分为如下几种类型

    位置 作用
    局部代码块 在方法当中使用,作用是控制变量的生命周期。
    局部代码块的变量,只能在代码块内部使用,在执行结束后会被Java回收
    构造代码块 在类的成员位置使用。
    在每次执行构造方法前先执行构造代码块,
    可以将多个构造方法中的相同的代码放到构造代码块中,对对象进行初始化.
    静态代码块

    在类的成员位置,代码块前添加static修饰符。

    一般用于给类初始化,被静态修饰的代码块仅执行一次.

      静态代码块、构造代码块、构造方法的优先级为:   静态代码块 > 构造代码块 > 构造方法;

    需要注意的是:

    1. 静态代码块和构造代码块,是在创建对象new的时候就开始执行了,匿名对象也可以调用。
    2. 静态代码块,一般用于某些需要在类执行之前就要执行的代码,和静态方法类似,优先级都高于类,两者的不同是静态方法需要手动通过类名.方法名来调用,而静态代码块是自动执行的,在加载类前会先执行类中的静态代码块。
    3. 对象实例化的时候,先检查类中是否有静态代码块,若有则先执行静态代码块,再检查是否有构造代码块,最后执行构造方法。
    4. 在继承关系中,对象实例化的时候,会先执行父类的静态代码块,然后是子类的静态代码块,然后再执行父类的构造代码块和父类无参构造方法,最后执行子类的构造代码块和无参构造方法。

    举例一:

    package com.study;

    class Block {
    static {
    System.out.println("我是静态代码块"); //只在第一次调用的时候执行,优先级最高
    }

    {
    System.out.println("我是构造代码块"); //每次被新对象调用时都执行,优先级在静态代码块之后
    }

    public Block() {
    super();
    System.out.println("我是无参构造方法");

    }

    public void method() {
    System.out.println("我是成员方法");
    }
    }

    public class APPTEXT {
    public static void main(String[] args) {
    {
    String a = "我是局部代码块";
    System.out.println(a);
    }
    //System.out.println(a); 报错局部代码块内的变量在代码块外不能访问,代码块执行完后就会被回收

    System.out.println("********");
    Block b = new Block();
    System.out.println("********");
    b.method();
    System.out.println("********");
    Block c = new Block();
    System.out.println("********");
    c.method();
    }
    }
    程序执行结果,输出如下:

    我是局部代码块
    ********
    我是静态代码块
    我是构造代码块
    我是无参构造方法
    ********
    我是成员方法
    ********
    我是构造代码块
    我是无参构造方法
    ********
    我是成员方法

    本博客转载自CSDN
    作者:liuchonghua 
    原文:https://blog.csdn.net/liuchonghua/article/details/79977496 

     

  • 相关阅读:
    Powershell分支条件
    Powershell基础
    初识PowerShell
    设计模式--策略模式
    设计模式--简单工程模式
    StandardWrapper
    Tomcat的安全性
    算法效率 简单的增长率 参照

    排序算法之 归并排序
  • 原文地址:https://www.cnblogs.com/newbie27/p/10414604.html
Copyright © 2011-2022 走看看