A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张11。。。 中级黑马   /  2018-8-21 11:31  /  536 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java基础之代码块的区别

java中用{}括起来的称为代码块,java中有常见的几种代码块,比如普通代码块、构造代码块、静态代码块、同步代码块,那么如何区分他们呢?

1.局部代码代码块
局部代码块又称为普通代码块,类中方法的方法体。
public static void main(String[] args) {
                // 局部代码块
                {
                        int a = 100;
                        System.out.println(“我是局部代码块”);
                }
        }
它的作用:是控制变量的生命周期。
在程序中当我们定义完成一个局部变量a之后,并且在接下来的代码中,不想再用到它时,那么就没必要让a在内存中继续占用空间,因此就称为局部代码块。

2.构造代码块
构造代码块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行。

public class Test {
       
        private String name;
        //构造代码块
        {
                name = "构造";
                System.out.println("我是构造代码块");
        }
}

构造代码块与构造函数的区别是:构造代码块是给所有对象进行初始化,构造函数是给对应的对象进行初始化,因为构造函数是可以有多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。

3.静态代码块
用static{}包裹起来的代码片段,只会执行一次。静态代码块优先于构造块执行。
静态代码块的作用:是对类进行初始化,若一个类包含多个静态代码块,那则是按照代码执行顺序执行(从上往下)。
        static {
                System.out.println("我是静态代码块");
        }
当类进入内存时,首先进行静态代码加载,例如静态代码块,用static 修饰的变量,函数等。静态代码块用于初始化类。构造函数是对对象进行初始化,而静态代码块可以对类进行初始化,就如在静态代码块中把静态变量 num 修改他的值。而且在一些不需要对类实例化的场合,静态代码块也可以非常有用。

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马