栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中的块{}(block)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中的块{}(block)

块 {}:在java中自成作用域,可以分为

静态代码块构造代码块普通语句块同步代码块
声明位置类中,方法外类中,方法外方法中fynchronized(){}
作用整个类进行某些初始化操作(静态属性赋值...)构造代码块是为对象初始化操作(为静态或非静态成员属性赋值...)声明一些临时变量等..控制并发
执行时机类第一次加载时,只执行一次,如果多个静态块,从上倒下一次执行创建对象时,执行构造器代码之前执行,如有多个,从上倒下一次执行跟随方法执行跟对方法执行

{}定义在方法中|语句块中 : 局部代码块|普通语句块 (执行时机 : 跟随方法)

{}定义在类中方法外 : 构造块 |成员代码块 (执行时机 : 跟随new)

static{}定义在类中方法外 : 静态块   (执行时机 : 类第一次加载)

同步代码块 : 后面用到再写

注意 :

1、构造块中的代码先于构造器代码之前执行,因为在编译期间构造块代码会被编译到要执行的构造器

内部,构造器代码之前

2、如果存在多个构造块,从上到下依次执行

3、静态块中的内容在类第一次加载完成之后就执行,并且只执行一次,先与main方法执行

4、如果存在多个静态块,从上到下依次执行

执行顺序 : 静态块 --> main ---> 构造块  --> 构造器

下方有块的经典题,红字代码

public class Class001_Block {
    static int i = 10;
    int j;

    //静态块
    static{
        System.out.println("我是静态块1");
    }
    static{
        System.out.println("我是静态块2");
    }
    static{
        System.out.println("我是静态块3");
    }

    public Class001_Block(){
        System.out.println("构造器...");
    }
    public Class001_Block(int j){
        System.out.println("构造器...");
    }

    //构造块
    {
        j = 10;
        System.out.println("构造块1");
    }
    {
        System.out.println("构造块2");
    }
    {
        System.out.println("构造块3");
    }

    public static void main(String[] args) {
        i = 1;
        //局部代码块|普通语句块
        {
            System.out.println("局部代码块");
            int  i = 5;
            System.out.println(i); //5
        }
        System.out.println(i); //1

        Class001_Block cb  = new Class001_Block();
        Class001_Block cb2  = new Class001_Block();
    }
}
 

//找到打印顺序+结果(、号前填写顺序)
public class Class002_BlockTest {
    public static int a = 0;
    {
        a = 10;
        System.out.println("  、非静态代码块执行a=" + a); //
    }    
    static {
        a = 6;
        System.out.println(" 、静态代码块执行a=" + a); //
    }
    public Class002_BlockTest() {
        this(a); //
        System.out.println(" 、"+a);  //
        System.out.println(" 、无参构造方法执行a=" + a); //
    }
    public Class002_BlockTest(int n) {
        System.out.println(" 、"+n); //
        System.out.println(" 、"+a);//
    }    
    public static void main(String[] args) {
        System.out.println(" 、main"); //
        Class002_BlockTest tsc = new Class002_BlockTest();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号