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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄方 中级黑马   /  2012-3-8 23:15  /  1859 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 舞动的心弦 于 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. }
复制代码

8 个回复

正序浏览
我也觉得是3 4
回复 使用道具 举报
我的理解,说错了,请谅解。
加载类,静态代码执行一次,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。
回复 使用道具 举报
应该是3、4
回复 使用道具 举报
估计编译会错,因为i为static,只需通过Demo_2.i 访问,不应通过对象访问
回复 使用道具 举报
静态代码块 只加载一次 呵呵
回复 使用道具 举报
结果是3,4
回复 使用道具 举报
同意楼上的。
回复 使用道具 举报
本帖最后由 苳眠 于 2012-3-8 23:28 编辑

因为静态在第一次载入类文件的时候加载到内存,以后创建对象就不用加载静态了
运行结果:
3
4
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马