黑马程序员技术交流社区
标题:
关于静态修饰符的一个问题
[打印本页]
作者:
日光加蓝
时间:
2014-8-3 23:58
标题:
关于静态修饰符的一个问题
本帖最后由 日光加蓝 于 2014-8-4 22:59 编辑
public class Test{
private static Ha ha;
static{
ha = new Ha();
}
}
和
public class Test{
private static Ha ha= new Ha();
}
这两个静态加载的方式有何区别?
作者:
怀念黑海岸
时间:
2014-8-4 00:16
顺序不一样,前者在你声明private static Ha ha时他就给ha这个对象赋了一个值:null。然后当你在执行对类Test的初始化时,jvm会执行静态块中的初始化过程。此时对象ha就有了一个真正指向的变量了。
而后者是当你在声明他的时候,先赋值为null,紧接着被你赋值成为一个有指向的变量了。
作者:
张涛的狂怒
时间:
2014-8-4 02:52
可以知道第一个是静态代码块,你可以把第二个人看成一个静态变量的实例化。public static int m......
这样看就是静态代码块与静态常量之间的区别。
静态代码块 静态方法区别
静态代码块 代码项目启动的时候就执行。代码是主动执行的;在项目启动的时候就初始化,
静态方法, 这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2