黑马程序员技术交流社区
标题:
权限修饰会改变顺序吗
[打印本页]
作者:
喝龙血的我
时间:
2013-10-12 22:13
标题:
权限修饰会改变顺序吗
本帖最后由 喝龙血的我 于 2013-10-13 08:41 编辑
<p>class StaticCode
{
private static StaticCode tt = new StaticCode();</p><p> private InstanceCode In = new InstanceCode();
static
{
System.out.println("StaticCode类的静态代码块");
}
private StaticCode()
{
System.out.println("StaticCode类的构造函数");
}
{
System.out.println("StaticCode类的构造代码块");
}
public static void main(String []agrs){
}
}
class InstanceCode
{
static
{
System.out.println("Instance类的静态代码块");
}
{
System.out.println("Instance类的构造代码块");
}
InstanceCode()
{
System.out.println("Instance类的构造函数");
}
只是改变了一下修饰变成private,为什么会发生执行顺序的变化??
复制代码
作者:
Jam-l
时间:
2013-10-12 22:59
private不会修改执行顺序.
首先了解静态修饰的成员都是优先于对象存在,而且如果一个类中有多个静态成员,就会从上往下执行.
1、首先StaticCode碰到的静态成员是tt变量,所以它就要实例化StaticCode类,实例化StaticCode类第一句碰到的就是实例化InstanceCode,但是由于InstanceCode类里又有静态代码块,所以先执行Instance类的静态代码块。
2、构造代码块都是优先于构造函数先执行的,所以再执行Instance类的构造代码块
3、Instance类的构造函数
4、StaticCode类的构造代码块
5、StaticCode类的构造函数
6、static的tt对象初始化完了,才初始化StaticCode类的静态代码块。
总结:静态执行顺序是,从上往下,从里往外。
作者:
杨增坤
时间:
2013-10-13 08:23
这个会不会更改执行顺序,你完全可以进行标志的输出语句,查看运行结果,
以查看结构就知道是否更改执行顺序哦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2