| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2231 人关注过本帖
标题:关于静态块,构造块,
只看楼主 加入收藏
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
结帖率:82.61%
收藏
已结贴  问题点数:20 回复次数:5 
关于静态块,构造块,
public class B
{
    public static B t1 = new B();
    public static B t2 = new B();
    {
        System.out.println("构造块");
    }
    static
    {
        System.out.println("静态块");
    }
    public static void main(String[] args)
    {
        B t = new B();
    }
}
这个输出结果为什么是   构造块 构造块 静态块 构造块
搜索更多相关主题的帖子: 静态 构造 public static new 
2017-08-08 10:28
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:10 
其实应该把main方法中的代码删掉,就更清晰了
JVM先加载class B,加载完成后开始执行静态的main方法
public static B t1 = new B();
执行到第一行时,JVM发现class B已经加载了(现在还没加载完成),开始调用构造方法,此时不会再执行静态方法(静态代码块只会在类加载的时候执行一次)
所以执行了System.out.println("构造块");
第二行同理
再到后面的static{System.out.println("静态块");}
执行main方法时,class B已经加载完成了

这个代码由于类加载过程中调用了构造方法,被暂时打断了,所以显得比较特殊,如果调用的是个外部的类就不会了
把第一行代码改成调用其他类,就会发现静态块是先于实例块执行的
public static Sub t1 = new Sub();
public class Sub {
    {
        System.out.println("sub构造");
    }

    static {
        System.out.println("sub静态");
    }
}

2017-08-08 23:09
鸩羽丶千叶
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2017-4-11
收藏
得分:10 
构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。所以优先执行输出两次"构造块",然后执行静态块,最后执行main方法。所以输出的顺序就为"构造块 构造块 静态块 构造块"。
2017-08-09 11:45
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
收藏
得分:0 
不管了,不想学java了,爬虫暂时也不研究了,兴致被打扰,偏偏我干什么都凭借兴致,玩android去。这个就随风飘荡了,可惜了。

什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2017-08-13 07:43
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
收藏
得分:0 
还是继续学习java,咳咳咳,因为感觉很强大,虽然最强大的应该 是c但是已经移情别恋了,

什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2017-08-13 10:27
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:0 
相同等级为瀑布式加载
2017-08-17 10:11
快速回复:关于静态块,构造块,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046844 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved