java代码块
普通代码块
> 类中方法的方法体,限制变量作用域
public static void main(String[] args) {
{
int x=10;
System.out.println("我是方法中的普通的代码块,或者叫局部代码块,x的作用域只在我的大括号里");
}
}
构造代码块
构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行。
public class MyTest {
static final int ooooo;
private final int anInt;
private int abInt;
{
System.out.println("构造代码块,作用是给类的部分字段统一初始化,这里给final修饰的成员变量赋值,构造代码块在构造函数之前执行");
anInt = 10;
}
静态代码块
用static{}包裹起来的代码片段,只会执行一次。静态代码块优先于构造块执行。
static {
System.out.println("静态代码块,给类的静态变量赋值或者声明静态变量,这里是给静态常量赋值");
ooooo = 7;
}
同步代码块
使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。
执行顺序
静态代码块->构造函数的super()->构造代码块->构造函数->代码正常执行顺序
public class MyTest {
static final int ooooo;
private final int anInt;
private int abInt;
{
System.out.println("构造代码块,作用是给类的部分字段统一初始化,这里给final修饰的成员变量赋值,构造代码块在构造函数之前执行");
anInt = 10;
}
MyTest() {
System.out.println("类构造器给普通成员变量赋值");
abInt = 20;
}
static {
System.out.println("静态代码块,给类的静态变量赋值或者声明静态变量,这里是给静态常量赋值");
ooooo = 7;
}
public static void main(String[] args) {
{
int x = 10;
System.out.println("我是方法中的普通的代码块,或者叫局部代码块,x的作用域只在我的大括号里");
}
int x = 10;
System.out.println("主方法中的x");
{
int y = 10;
System.out.println("代码块中的y");
}
MyTest myTest = new MyTest();
System.out.println(myTest.abInt);
System.out.println(myTest.anInt);
System.out.println(myTest.ooooo);
}
}
结果如下:
静态代码块,给类的静态变量赋值或者声明静态变量,这里是给静态常量赋值
我是方法中的普通的代码块,或者叫局部代码块,x的作用域只在我的大括号里
主方法中的x
代码块中的y
构造代码块,作用是给类的部分字段统一初始化,这里给final修饰的成员变量赋值,构造代码块在构造函数之前执行
类构造器给普通成员变量赋值
20
10
7
你要是觉得写的还不错,就点个关注,可以评论区留下足迹,以后方便查看.
你要是觉得写的很辣鸡,评论区欢迎来对线!
欢迎转载!