黑马程序员技术交流社区
标题:
关于静态方法,静态变量加载顺序的问题
[打印本页]
作者:
cs8630323
时间:
2014-9-14 17:41
标题:
关于静态方法,静态变量加载顺序的问题
本帖最后由 cs8630323 于 2014-9-14 18:00 编辑
class aaa
{
public static void main(String[] args)
{
//bbb.b1();
new bbb();
}
}
class bbb
{
static
{
b1();
System.out.println("bbb静态代码块"+bs);//
}
static int bs=33;
static void b1()
{
System.out.println("静态方法"+bs);
}
}
/*编译错误,去掉16行的+bs后编译通过,执行后结果是
静态方法0
bbb静态代码块
我的问题是为什么b1()能调用还未加载的bs变量,
为什么b1方法输出的bs变量为0.
复制代码
作者:
夜半风
时间:
2014-9-14 18:15
你定义的bs变量是在静态代码块之后加载进内存,你认为电脑那么机智吗? 他根本就不认识静态代码块里面的bs,你把bs位置调一下,之后也可以把bbb.b1();的注释去掉。
作者:
夜半风
时间:
2014-9-14 18:18
代码是从上往下执行的 还有一个比较严重的问题 你起变量和类的名字真不咋的 以后可不能这么干了 起了名字就是为了认识的 你这样瞎起的名字 遇到大点的项目 乱起起多了以后你还能分清楚哪个是哪个吗? 基础视频应该说过起变量名字的问题吧 看看老师都是怎么起名字的 不要起那些没有意义的名字 不好
作者:
waterloocode
时间:
2014-9-14 18:22
楼主你是怎么编译通过的?类名为什么不是大写的?
作者:
cs8630323
时间:
2014-9-14 23:45
本帖最后由 cs8630323 于 2014-9-14 23:47 编辑
夜半风 发表于 2014-9-14 18:18
代码是从上往下执行的 还有一个比较严重的问题 你起变量和类的名字真不咋的 以后可不能这么干了 起了名字就 ...
拜托,bs变量我是故意放后面,你说的我都知道,都没有答到点子上:L
这个程序是为了方便我快速编译运行,测试些代码的一个demo,变量名就起简单的,也没想别人懂这个变量名
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2