A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈佳龙 中级黑马   /  2012-10-4 13:37  /  2617 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈佳龙 于 2012-10-8 11:23 编辑


为什么static里面的输出只打印一次??

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
那叫静态代码块,它的特点是随着类的加载而执行!
也就是说,当你的类加载的时候,它才执行。因此,你的程序在运行的时候,你的类仅仅加载了一次,所以只执行一次。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
沈佳龙 + 2 赞一个!
王海宇 + 1

查看全部评分

回复 使用道具 举报
static{}是静态代码块,随着类的加载而加载,而且优先于构造代码块执行,只执行一次
这是他的很明显的特点,不需要理解,你记住就行了

评分

参与人数 1技术分 +1 收起 理由
王海宇 + 1

查看全部评分

回复 使用道具 举报
楼上两位都说得很好,不需要再说了。。。。
回复 使用道具 举报

静态代码块是在类加载之后执行的,当然静态代码块在构造代码块之前执行;

静态代码块
a: 在类加载之后执行;
                 
b: 不能使用外部非静态成员(方法、变量);
               
c: 静态代码块和静态成员变量指定值的顺序是由代码从上到下的顺序决定的;
               
d: 如果有一段代码 我们希望在加载某个类的时候执行,而且只执行一次的时候,就可以使用静态代码块;




评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
它是一个静态代码块,随着类的加载而执行,只执行一次,在构造函数,构造代码块之前执行;并优先于主函数(main),用于给类进行初始化。

评分

参与人数 1黑马币 +9 收起 理由
王海宇 + 9

查看全部评分

回复 使用道具 举报
上面说的好全了,我不说了
回复 使用道具 举报
彼岸花 发表于 2012-10-4 14:03
static{}是静态代码块,随着类的加载而加载,而且优先于构造代码块执行,只执行一次
这是他的很明显的特点 ...

静态代码块和 静态方法的加载是一样的吗?
回复 使用道具 举报
陈琦 中级黑马 2012-10-5 16:19:09
9#
都学得好扎实,哎,黑马不好进啊啊
回复 使用道具 举报
这是静态代码块 他是随着类的加载而执行且只执行一次 即使你new了 两次 这个类也只加载了一次
如果你想让那个代码块打印两次 可以弄一个构造代码块(去掉static)  这样没new一个对象 构造代码块就执行一次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马