资讯专栏INFORMATION COLUMN

6.java 代码块

tuantuan / 2156人阅读

摘要:构造块优先于构造函数执行,如果存在多个构造代码块,则执行顺序按照定义的顺序依次执行。静态代码块在中使用关键字声明的代码块。同步代码块需要写在方法中。

代码块

在java中用{}括起来的称为代码块,代码块可分为以下四种:

普通代码块

构造代码块

静态代码块

同步代码块

普通代码块

在方法或语句中出现的{}就称为普通代码块。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先出现先执行。

普通代码块一般过来限制变量的作用域,防止代码过多时可能产生的变量命名冲突。

示例:

public class testDemo {
    public static void main(String[] args ) {
        {
            int x = 3;
            System.out.println("普通代码块中的变量x=" + x);
        }

        int x = 1;
        System.out.println("主方法中的变量想=" + x);

        {
            int y = 7;
            System.out.println("普通代码块中的变量y=" + y);
        }
    }

}
构造代码块

在类中直接使用没有任何修饰符的{}声明的代码块就是构造块。

和构造函数的作用类似,都能对对象进行初始化,并且只要实例化一个对象,构造代码块都会执行一次。

构造块优先于构造函数执行,如果存在多个构造代码块,则执行顺序按照定义的顺序依次执行。

示例:

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

class Test{
    {
        //构造代码块
        System.out.println("构造代码块1。");
    }
    //构造函数
    public Test(){
        System.out.println("无参构造函数。");
    }

    {
        //构造代码块
        System.out.println("构造代码块2。");
    }
}
输出结果:
构造代码块1。
构造代码块2。
无参构造函数。
静态代码块

在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。

静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。

一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。

示例:

public class testDemo {
    public static void main(String[] args ) {
        Test t1 = new Test();
        System.out.println("**********");
        Test t2 = new Test();
    }
}

class Test{
   
    static {
        //静态代码块
        System.out.println("静态代码块1。");
    }
   
    //构造函数
    public Test(){
        System.out.println("无参构造函数。");
    }
    
    static {
        //静态代码块
        System.out.println("静态代码块2。");
    }  
}

输出结果:
静态代码块1。
静态代码块2。
无参构造函数。
**********
无参构造函数。
同步代码块

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

代码块执行顺序

静态代码块 > 构造代码块 > 构造函数

示例:

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

class Test{
   
    {
        //构造代码块
        System.out.println("构造代码块");
    }
   
    //构造函数
    public Test(){
        System.out.println("构造函数");
    }

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

输出结果:
静态代码块
构造代码块
构造函数

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73497.html

相关文章

  • Java异常处理

    摘要:异常也就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制。有两个重要的子类异常和错误,二者都是异常处理的重要子类,各自都包含大量子类。需要注意的是,一旦某个捕获到匹配的异常类型,将进入异常处理代码。 1,异常现象 程序错误分为三种:1,编译错误;2,运行时错误;3,逻辑错误。 编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这...

    CarlBenjamin 评论0 收藏0
  • Java问题汇总,持续更新到GitHub

    摘要:目录介绍问题汇总具体问题好消息博客笔记大汇总年月到至今,包括基础及深入知识点,技术博客,学习笔记等等,还包括平时开发中遇到的汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善开源的文件是格式的同时也开源了生活博客,从年 目录介绍 00.Java问题汇总 01.具体问题 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技...

    beita 评论0 收藏0
  • 这些Java面试题必须会-----鲁迅

    摘要:事实上,所谓的同步就是指阻塞式操作,而异步就是非阻塞式操作。中可以通过设值注入方法注入和构造器注入实现,推荐使用的方式为设值注入。 写在前面 春天来了,万物复苏的季节到了. 许多程序猿安奈不住生理需求,我要涨工资,我要跳槽. 毕竟金三银四嘛. 那么要从众多的面试者中获得求职机会,我们就要面对很多的面试题. 程序猿是最烦面试题的.面试的公司也烦,面试的人也烦. 但是没办法.面试的人鱼龙混...

    aristark 评论0 收藏0
  • 金三银四背后,一个 Android 程序员的面试心得

    摘要:到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。加一个小插曲上面的题是饿了吗面试问到的。想去的公司没有面试好,不要气馁,继续加油准备。避免打击自信心。 回顾一下自己这段时间的经历,九月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走...

    yzzz 评论0 收藏0
  • 金三银四背后,一个 Android 程序员的面试心得

    摘要:到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。加一个小插曲上面的题是饿了吗面试问到的。想去的公司没有面试好,不要气馁,继续加油准备。避免打击自信心。 回顾一下自己这段时间的经历,九月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走...

    Achilles 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<