java面试题-静态代码块,构造代码块,构造方法的执行顺序问题

本文详细解析了Java中构造代码块与静态代码块的执行时机与顺序,通过具体示例阐述了它们在对象创建及类加载过程中的作用。强调了静态代码块随类加载而执行,构造代码块在构造方法前执行的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子:

.class Student {
.			static {
.				System.out.println("Student 静态代码块");
.			}
.			
.			{
.				System.out.println("Student 构造代码块");
.			}
.			
.			public Student() {
.				System.out.println("Student 构造方法");
.			}
.		}
.	
.		class Demo2_Student {
.			static {
.				System.out.println("Demo2_Student静态代码块");
.			}
.			
.			public static void main(String[] args) {
.				System.out.println("我是main方法");
.				
.				Student s1 = new Student();
.				Student s2 = new Student();
.			}
.		}

运行结果:
Demo2_Student静态代码块
我是main方法
Student 静态代码块
Student 构造代码块
Student 构造方法
Student 构造代码块
Student 构造方法
  1. 构造代码块:每创建一次对象就会执行一次,优先于构造函数执行
  2. 静态代码块随着类加载而加载,且只执行一次
  3. 静态代码块是优先于主方法执行
  4. 总的来说,优先级:静态代码块>构造代码块>构造方法.
  5. 上面的那个代码,有两个类,其中主方法在第二个类中,于是先执行第二个类,因为静态代码块的优先级最高,于是限制性第二个类的静态代码块,然后进入主方法,执行主方法。然后往下走,创建了student累的对象,执行该类的静态代码块,而且只执行一次,然后依次执行构造代码块,然后构造方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值