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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飘雪恩情 初级黑马   /  2014-3-25 12:25  /  1068 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class AccessProperty
{     static int i=47;
      public void call()
     {   System.out.println("调用call()方法");
         for(i=0;i<3;i++)
         {
            System.out.println(i+"");
          if(i==2)
          {
            System.out.println("\n");
           }
          }
    public  AccessProperty ( )
{                                    }
  public static viod main(String[]  args)
      {
        AccessProperty  t1=new    AccessProperty ( );
          AccessProperty  t2=new      AccessProperty  ();
          t2.i=60;
         System.out.println(t1.i++);
        t1.call();
       System.out.println( t2.i);
       t2.call();      
      }
}
t2.i为什么等于3?是怎么算的?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

2 个回复

倒序浏览
static成员变量是一个类的共享变量,该类的实例对象操作的都是同一个地址块上的值。

         t2.i=60;  //将 i 赋值为60
         System.out.println(t1.i++); //先打印了 i 的值,然后 i 自增,变成61
          t1.call();  // call函数中执行了for循环,for循环的初始化语句先执行,就将 i 赋值为0了,然后执行循环体,i=2时的循环体执行完后,i++执行,值为3,然后判断循环终止条件满足,call函数结束,i 就保持为3,t2.i =3.

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
建议你在for循环 初始化表达式里 加个int 应该会是你要的结果

  1.                 for (int i = 0; i < 3; i++) {
  2.                         System.out.println(i + "");
  3.                         if (i == 2) {
  4.                                 System.out.println("\n");
  5.                         }
  6.                 }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马