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

猜你喜欢

转载自blog.csdn.net/qq_40550973/article/details/80549453
今日推荐