黑马程序员技术交流社区

标题: 看看你的基础怎么样? [打印本页]

作者: 黄方    时间: 2012-3-8 23:15
标题: 看看你的基础怎么样?
本帖最后由 舞动的心弦 于 2012-3-8 23:16 编辑
  1. public class Demo_2
  2.                
  3. {
  4.         static int i=1;
  5.              static{               
  6.           
  7.         i++        ;          
  8.           
  9.                   }
  10.                 public        Demo_2(){   
  11.                                        
  12.                             i++;
  13.        
  14.                         }

  15.                 public static void main(String[]args){
  16.                 Demo_2   d1=new Demo_2();
  17.                 System.out.println(d1.i);
  18.                 Demo_2  d2=new  Demo_2();
  19.                 System.out.println(d2.i);
  20.                         }

  21. }
复制代码

作者: 王杰    时间: 2012-3-8 23:26
本帖最后由 苳眠 于 2012-3-8 23:28 编辑

因为静态在第一次载入类文件的时候加载到内存,以后创建对象就不用加载静态了
运行结果:
3
4
作者: 泮和顺    时间: 2012-3-9 06:55
同意楼上的。
作者: 肖发腾    时间: 2012-3-9 07:40
结果是3,4
作者: 袁野    时间: 2012-3-9 15:21
静态代码块 只加载一次 呵呵
作者: 李成航    时间: 2012-3-9 15:53
估计编译会错,因为i为static,只需通过Demo_2.i 访问,不应通过对象访问
作者: 黄或俊    时间: 2012-3-9 16:54
应该是3、4
作者: 张亮    时间: 2012-3-9 17:41
我的理解,说错了,请谅解。
加载类,静态代码执行一次,i由1变2。
Demo_2   d1=new Demo_2(); 此处调用Demo_2(),i由2变3。输出i的值是3。
Demo_2  d2=new  Demo_2();此处又调用Demo_2(),i由3变4。输出的值是4。
作者: 黑马—王宁    时间: 2012-3-9 17:49
我也觉得是3 4





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2