package com.wsy;public class CopyOfTransferProperty {
static int i=47;
public void call(){
System.out.println("调用call()方法");
for(i=0;i<3;i++){
System.out.print(i+" ");
if(i==2){
System.out.println("\n");
}
}
}
public CopyOfTransferProperty(){

}
public static void main(String[] args) {
CopyOfTransferProperty t1=new CopyOfTransferProperty();
CopyOfTransferProperty t2=new CopyOfTransferProperty();

System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
t1.call();
System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
t2.call();
}

}问题1:在主方法中t1.i++改成i输出结果一样在题目里写成i++有什么作用。。
问题2:为什么t2.i的输出结果不是47..而是3.
问题3:即使我再加多个t3上去为什么输出结果也是3的。
想了一个下午了。希望高手们为小弟解答下。。

解决方案 »

  1.   

    对于i++,先执行System.out.println("第一个实例对象调用变量i的结果:"+t1.i),再执行i+1;
      

  2.   

    一、System.out.println("第一个实例对象调用变量i的结果:"+t1.i++); 是指输出i的值后i自增1,相当于执行了i=i+1;
    二、t2.i结果是3,因为你在调用t2.call();方法时, for(i=0;i <3;i++)先将i的值赋成0然后循环到i=3时不满足条件退出循环,此时的i值为3;
    你每调call() 方法时都会将i的值改为0再循环,所以值会都是3
      

  3.   

    t1.i++ 就是我们所说的++在后System.out.println打印的值还是47,在 System.out.println()后static int i=47 加了1 。
    System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);  //这个打印47 后加1
    System.out.println(CopyOfTransferProperty.i);  //这个打印48