黑马程序员技术交流社区

标题: 新手提问 关于对象调用静态成员变量的问题 [打印本页]

作者: life木子飞    时间: 2015-6-28 16:50
标题: 新手提问 关于对象调用静态成员变量的问题
public class Ap
{
  static int i=47;
  public void call()
  {  

    System.out.println("调用call()方法");
    for(i=0;i<5;i++)
      {
         
       System.out.print(i+" ");
       if(i==4)
         {  
           System.out.println("\n");
         }
      }
  }
  public Ap(){}
  public static void main(String[] args)
  {
    Ap a1=new Ap();
    Ap a2=new Ap();
    a2.i=60;
    System.out.println("第一个实例对象调用变量i的结果:"+a1.i);
    a1.call();
    System.out.println("第二个实例对象调用变量i的结果:"+a2.i);
    a2.call();
  }
}


为什么这个程序执行后 a2.i 的打印结果是 5
作者: 腹黑生姜    时间: 2015-6-28 20:28
for循环里面的i其实就是静态的那个i,它没有重新创建变量, 当执行到 a1.call();的时候,
for(i=0;i<5;i++)
      {
         
       System.out.print(i+" ");
       if(i==4)
         {  
           System.out.println("\n");
         }
当i==4时换行后,i还会回到for循环++一下,所以i=5,
所以a2.i 的打印结果是 5
不知道解释的对不对?




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