java中对象的属性和行为

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();
CopyOfTransferProperty t3=new CopyOfTransferProperty();

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

}

}
在主方法中定义的t2.i=60;
输出结果t1.i++写成t1.i有什么分别.
为什么输出t2的时候结果不是60而是3.很想不明白.
新手入门请教各位高手.谢谢了.
那如果方法中我把i++.改成i
输出结果是一样。。那写成i有什么分别。我知道i++是运算后递增1.
t2的值等于3很想不明白。怎么循环到3了。。
2~3楼得解释得我不太明白。
有没有说详细的。 谢谢了。

输出结果t1.i++写成t1.i有什么分别.
答:输出结果是没有什么分别的,只是在输出结果之后,t1.i的值自增1
为什么输出t2的时候结果不是60而是3.很想不明白.
t2输出时,已经调用了t1.call方法,由于i是一个静态变量,它的值也表现在CopyOfTransferProperty其它所有的对象中
for(i=0;i<3;i++){
System.out.print(i+" ");
if(i==2){
System.out.println("\n");
}
}
循环结束后,i的值为3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-12
System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
是先输出t1.i的值之后才进行++ 操作的,这个过程是先使用后++操作
输出3是因为在执行call方法中的for语句重新给i赋值了
第2个回答  2009-08-04
首先因为i是一个静态变量.为类中所有对象所共享.
刚开始 i=47,然后t2.i=60,把它改为60.
然后,System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
打印出i的值为60.(i++是先取i的值,再让i自加1).

然后t1.call();经过循环 i的值变为3.
最后,System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
打印出i的值为3.
相似回答