Java的静态代码块与实例代码块

 

构造代码块
构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块构造代码块一般用于初始化实例成员变量,实例代码块只有在创建对象时才会执行.
注意:
1:在一个类中可以有多个实例代码块
2:示例代码快在每次创建对象时,都会被执行,目的:将对象中的成员初始话完整
3:创建对象时,多个实例代码块按照在类中出现的先后次序执行(可自行通过调试观察)
4:实例代码块中的内容:将来都会按照在类中声明的先后次序被拷贝到构造方法中去(可通过字节码文件观察)
静态代码块
不管生成多少个对象,其只会执行一次
静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
注意:
1:一个类中可以多个静态代码块;
2:静态代码块内部只能初始化静态成员变量,不能初始化实例变量,也不能使用this
3:多个静态代码块最终按照其在类中出现的先后次序被合并到clinit方法中 了
clinit编译器生成的所有静态代码块中的内容都是按照其在类出现的先后次序被合并到clinit
4:静态代码块中的内容是在内加载的时候被执行的,每次加载的时候都会被执行
静态代码块执行次数与创建对象的个数没有关系;
public class Student{
private String name;
private String gender;
private int age;
private double score;
private static String classRoom;
//实例代码块
 { 
this.name = "xxx"; 
this.age = 12
this.gender = "man"; 
System.out.println("实例初始化!"); 
}
// 静态代码块 
static {
classRoom = "303";
 System.out.println("静态初始化");
 }
public Student(){
 System.out.println("无参构造函数!");
 }
public static void main(String[] args) {
 Student s1 = new Student(); 
Student s2 = new Student();
}
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jhpan666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值