JAVA的实例块和静态块

实例块

实例块就是一个划分的代码区域。{   代码   }

1.它是在构造器之前执行。

2.它和属性初始化一同执行。

3.一个类中可以有很多个实例块。

4. 多个实例块执行顺序是按照顺序从上到下执行。

public class Test3 {
    {
        System.out.println("我是实例块!");
    }
}
静态块

 静态块是类加载的时候和静态属性一起执行的。也是按顺序从上往下执行。

public class Test3 {
    static{
        System.out.println("我是静态块!");
    }
}

那么类是在什么情况下会加载呢?

1.在声明静态属性但并没有使用属性时,不会对类进行加载。使用静态属性时才会对类进行加载。

2.声明或使用常量时都不会对类进行加载,因为常量的内存和类成员的内存不在同一内存内。

3.使用静态方法或new肯定会加载类。

4.加载类方法:class.forName( 类的全名 )

怪题:


main方法中,new Test1();,然而Test1类中又new Test1,因为new对象的时候肯定会加载类,然而加载类其实就是加载静态属性,所以这就成了死循环。报出方法嵌套调用溢出的错误:java.lang.StackOverflowError

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值