黑马程序员技术交流社区
标题:
求助
[打印本页]
作者:
zc332750
时间:
2014-2-8 10:44
标题:
求助
class StaticStuff
{
static int x=10;
static { x+=5;}
public static void main(String args[])
{
System.out.println("x=" + x);
}
static { x/=3;}
}
为何打印出来是5?
作者:
kkopopo
时间:
2014-2-8 11:50
程序运行: 加载类 , 静态代码块对类初始化 , 静态代码块 优先于main()函数 15/3 =5
作者:
630681386@qq.co
时间:
2014-2-10 09:57
是5就是对的,本来是10,静态代码块会先执行,第一次后是15,第二次后变成5了,然后才输出
作者:
放课后小朋友
时间:
2014-2-11 22:49
首先应明白的一个问题是:类中函数的优先级问题。
优先级由高到低依次是:静态代码块>构造代码块>构造方法>自定义方法
你定义了两个静态代码块,先开始定义m=10,然后执行第一个静态代码块x+=5变成15,然后执行第二个静态代码块x/=3变成5,最后执行main函数,输出x=5。
希望可以帮到你
--------手打内容,请勿copy,也勿paste,可以照写---------
作者:
诺忔。初禾、
时间:
2014-2-14 16:51
程序先运行 静态代码块static { x+=5;},这里x又调用static int x=10; ===》x=15 ;接着运行静态代码块static { x/=3;}====》x=5
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2