黑马程序员技术交流社区

标题: 现在看到static关键字哪,碰见一个显示初始化时个什么东..... [打印本页]

作者: wanmei0398    时间: 2014-11-2 22:31
标题: 现在看到static关键字哪,碰见一个显示初始化时个什么东.....
显示初始化时什么。那个初始化顺序是什么啊!他的优先级呢?

作者: feng_0207    时间: 2014-11-3 16:19
你说的显示初始化就是形如:
private String name = "zhangsan";
这样的,就叫显示初始化。
还有就是你说的应该是初始化顺序那块的东西, 关于包含静态代码块的类,初始化相关可以概括为以下内容[size=14.666666984558105px]1static代码块:静态代码块。 静态代码块的作用也是完成一些初始化工作。首先执行静态代码块,然后执行构造方法。静态代码    块在类被加载的时候执行,而构造方法是在生成对象的时候执行;要想调用某个类来生成对象,首先需要将类加载到Java 虚拟    机上( JVM),然后由JVM 加载这个类来生成对象。
2)类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会被执行一次      而构造方法则不然,每次生成一个对象的时候都会调用类的构造方法,所以 new 一次就会调用构造方法一次。
3)如果继承体系中既有构造方法,又有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层类的静态代码块   然后再去执行最顶层类的构造方法,一直执行到最底层类的构造方法。 注意:静态代码块只会执行
   一次。

类加载初始化顺序,根据毕老师基础视频总结如下:
Person p = new Person(“zhangsan”,20;

类加载----静态代码块----在堆内存中开辟空间分配内存地址----在堆内存中建立对象的特有属性并进行默认初始化----对属性进行显示初始化----对对象构造代码块初始化---对对象对应的构造函数初始化---讲内存地址赋值给栈内存中的p变量。


作者: wanmei0398    时间: 2014-11-3 17:57
feng_0207 发表于 2014-11-3 16:19
你说的显示初始化就是形如:
private String name = "zhangsan";
这样的,就叫显示初始化。

明白了。谢谢!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2