我想问一下为什么加了static 就不会爆栈,不加static会爆栈我可以理解,但是加了就不会爆栈我就理解不了,能不能讲一下底层发生了什么
加了static之后,修饰的变量就成为了实例共享属性,而这种静态属性的初始化只会在类首次被载入进JVM时执行一次。
你可以在DanLiText类的构造方法中加上控制台打印,就能很清楚的知道DanLiText类实例只创建了两次。
加了static之后,执行顺序如下:
public static DanLiText danLiText = new DanLiText()
执行。public static DanLiText danLiText = new DanLiText()
不会再次执行。static类型的主函数只会执行一次,而如果不加static,你每实例一次它都执行,而它里面又继续实例,无限递归
那你知不知道加static之后代码是什么时候运行呢?不加又是什么时候运行呢?