黑马程序员技术交流社区

标题: 对象调用静态成员变量 [打印本页]

作者: 飘雪恩情    时间: 2014-3-25 12:25
标题: 对象调用静态成员变量
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?是怎么算的?

作者: chen_x    时间: 2014-3-25 13:15
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.


作者: osully    时间: 2014-3-25 13:30
建议你在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.                 }
复制代码





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