Java中的代码块
2023-04-18 15:18:28 时间
Java中的代码块
我们在做笔试题的时候经常会遇到考察类中代码块运行顺序的题,所以我现在把它总结一下。
在Java中,代码块(Block)是用一对大括号括起来的一段代码,它可以包含多条语句。根据它的位置和修饰符,Java中的代码块可以分为以下几种:
- 类初始化块(Static Initialization Blocks):用static关键字修饰,用于在类被加载时执行一些初始化操作,可以有多个类初始化块,按照它们在类中的位置依次执行。
public class MyClass {
static {
// 类初始化块
}
}
- 实例初始化块(Instance Initialization Blocks):不用任何修饰符修饰,用于在每个对象被创建时执行一些初始化操作,可以有多个实例初始化块,按照它们在类中的位置依次执行。
public class MyClass {
{
// 实例初始化块
}
}
- 局部代码块(Local Blocks):用于在方法中限定变量的作用域和生命周期,局部代码块内定义的变量只能在该块内访问,块执行完后变量会被销毁。
public void myMethod() {
{
int x = 1; // 局部代码块
}
}
- 同步代码块(Synchronized Blocks):用synchronized关键字修饰,用于实现线程同步,同一时刻只能有一个线程进入同步代码块执行。
public class MyClass {
public synchronized void myMethod() {
// 同步代码块
}
}
代码块中的变量和语句可以访问和操作它们所属的作用域内的变量和对象,代码块的作用是提高代码的可读性和灵活性,使代码具有更细粒度的控制和处理能力。
下面我用代码对类初始化块和实例初始化块的运行顺序进行测试:
public class A {
{
System.out.println("A的实例初始化块");
}
static {
System.out.println("A的类初始化块");
}
public A() {
System.out.println("A的构造方法");
}
}
public class B extends A{
static {
System.out.println("B的类初始化块");
}
{
System.out.println("B的实例初始化块");
}
public B() {
System.out.println("B的构造方法");
}
public static void main(String[] args) {
new B();
}
}
输出: ①A的类初始化块
②B的类初始化块
③A的实例初始化块
④A的构造方法
⑤B的实例初始化块
⑥B的构造方法
解释:类初始化块会在类被加载时执行,所以12先执行。实例初始化块在类被实例化时执行,并且先于构造方法执行。
相关文章
- Jease 2.6发布 Java开源内容框架
- JVM调优总结:反思
- JVM调优总结:调优方法
- JVM调优总结:新一代的垃圾回收算法
- JVM调优总结:典型配置举例
- JVM调优总结:分代垃圾回收详述
- JVM调优总结:垃圾回收面临的问题
- JVM调优总结:基本垃圾回收算法
- JVM调优总结:一些概念
- 用Java GUI编写的画板程序
- Java的动态绑定机制
- jOOQ 2.0.2发布 Java的ORM框架
- Java中带复选框的树的实现和应用
- Java网络编程菜鸟进阶:TCP和套接字入门
- 甲骨文与谷歌专利权之争定于今年三月开审
- Java调用C/C++编写的第三方dll动态链接库
- 集成开发环境 NetBeans IDE 7.1正式版发布
- kangle 2.7.5紧急发布 防hash碰撞攻击
- 东方通技术引领模式为国产软件“争权”
- UML中关联,组合与聚合等关系的辨析