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

Java代码块基础

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

Java代码块基础

Java代码块有四种类型:

普通代码块(本地代码块)

实例代码块(构造代码块)

静态代码块

同步代码块(在多线程中使用,还未学习,学习以后再补充)


普通代码块

普通代码块使用较少,就是在方法中用大括号定义的一个代码块

class A{
    public int x;
    private int y;

    public static int z;
    {
        int x = 3;
        System.out.println("普通代码块"+x);
    }   
}
public class Test {
    public static void main(String[] args) {
        A a = new A();
    }
}

普通代码块会在每次对象实例化时被调用,结果如下:

构造代码块

构造代码块和普通代码块几乎没有区别,只是在构造代码块中要给类成员赋值,在语法上和普通代码块没有任何区别,在功能上就是类内成员初始化。

class A{
    public int x;
    private int y;

    {
        this.x = 1;
        this.y = 2;
        System.out.println("实例代码块"+x);
    }

}
public class Test {
    public static void main(String[] args) {
        A a = new A();
    }
}

构造代码块同样会在每次对象实例化时被调用,结果如下:

静态代码块

静态代码块与前面两个代码块有着显著区别,在语法上大括号前要加上static修饰符,在功能上和static函数一样,不能给类成员赋值,只能给static成员赋值,并且在多个对象实例化时只会被调用一次。而且由于静态成员是在JVM加载类时开辟空间并初始化的,所以静态代码块会先于普通代码块和构造代码块调用。

class A{
    public int x;
    private int y;

    public static int z;
    {
        int x = 3;
        System.out.println("普通代码块"+x);
    }

    {
        this.x = 1;
        this.y = 2;
        System.out.println("实例代码块"+x);
    }

    static {
        z = 3;
        System.out.println("静态代码块"+z);
    }
}
public class Test {
    public static void main(String[] args) {
        A a = new A();
        A a2 = new A();
    }
}

结果如下:

 可以看到静态代码块只调用了一次

其实关于静态代码块为什么只调用了一次的问题其实很好解释,因为类静态成员是一个类共有的属性,因此静态代码块也是为类服务的,并不是为了哪个成员,这就是静态代码块只调用一次的原因。

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

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

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