关于java中静态变量 和for循环的问题

[复制链接]
查看11 | 回复2 | 2010-9-27 20:37:54 | 显示全部楼层 |阅读模式
public class lei {

static int a=47;
//可以尝试在int前加上static

public void call(){

System.out.println("调用了call()方法.");

for(a=0;a<3;a++){

System.out.print(a);

if(a==2){

System.out.println();

}

}

}

public lei(){
//构造方法

}
public static void main(String args[]) {
lei l1=new lei();
lei l2=new lei();
l2.a=60;
System.out.println("l1对象调用的变量a的值为 :"+l1.a);
l1.call();

System.out.println("l2对象调用的变量a的值为 :"+l2.a);
l2.call();
}
}
l2对象调用静态变量的值为多少,为什么?? 请高手帮忙.感谢!
很感谢czy19880623 你的回答 正确答案确实是3,但是我还是不能理解,
执行 System.out.println("l1对象调用的变量a的值为 :"+l1.a);后
l1调用静态变量a的时候a已经为60了对吧,然后l1调用了call()方法,方法里面为:
for(a=0;a<3;a++){

System.out.print(a);

if(a==2){

System.out.println();

}
这个for循环以后里面条件是<3的整数,我理解为结果得到的是2,那么为什么会是3呢?

回复

使用道具 举报

千问 | 2010-9-27 20:37:54 | 显示全部楼层
for(a=0;a<3;a++){
System.out.print(a);
if(a==2){
System.out.println();
}a等于2时进入for循环,执行完出来,执行a++,a等于3,for判断a不小于3,退出循环1.for的执行顺序是第一次执行赋值语句a=0,2.然后执行判断a<3成立就进入循环,否则退出;3.如果进入循环就执行循环体,然后执行a++4.循环2、3;
回复

使用道具 举报

千问 | 2010-9-27 20:37:54 | 显示全部楼层
显然还是3,因为调用l2.call()的时候,里面的for(a=0;;),对a又做了赋值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行