黑马程序员技术交流社区

标题: 关于静态方法,静态变量加载顺序的问题 [打印本页]

作者: cs8630323    时间: 2014-9-14 17:41
标题: 关于静态方法,静态变量加载顺序的问题
本帖最后由 cs8630323 于 2014-9-14 18:00 编辑
  1. class aaa
  2. {
  3. public static void main(String[] args)
  4. {
  5. //bbb.b1();
  6. new bbb();
  7. }
  8. }

  9. class bbb
  10. {

  11. static
  12.     {
  13.       b1();
  14.       System.out.println("bbb静态代码块"+bs);//
  15.     }

  16.         static int bs=33;

  17. static void b1()
  18. {
  19. System.out.println("静态方法"+bs);
  20. }
  21. }


  22. /*编译错误,去掉16行的+bs后编译通过,执行后结果是  
  23.   静态方法0
  24.   bbb静态代码块

  25.   我的问题是为什么b1()能调用还未加载的bs变量,
  26.   为什么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