调用静态成员变量的问题

skdelove 2009-08-04 04:44:11
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的。
想了一个下午了。希望高手们为小弟解答下。。
...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
d60000522 2009-08-04
  • 打赏
  • 举报
回复
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
xuchaofu2010 2009-08-04
  • 打赏
  • 举报
回复
一、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

feishare 2009-08-04
  • 打赏
  • 举报
回复
对于i++,先执行System.out.println("第一个实例对象调用变量i的结果:"+t1.i),再执行i+1;

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧