1\public class Test2{
public static void main(String[] args){
Count mycount= new Count();
int times=0;

for (int i=0;i<100;i++){
increment(mycount,times);

}
System.out.println("count is "+mycount.count);
System.out.println("times is "+times);

}


public static void increment(Count c ,int times ){
c.count++;
times++;
}



   public static  class Count{
public int count;


Count(int c){
count=c;
}


Count(){
count=1;
}

}
}
2\
public class Test2{
public static void main(String[] args){
Count mycount= new Count();
int times=0;

for (int i=0;i<100;i++){
increment(mycount);
times++;

}
System.out.println("count is "+mycount.count);
System.out.println("times is "+times);

}


public static void increment(Count c  ){
c.count++;
}



   public static  class Count{
public int count;


Count(int c){
count=c;
}


Count(){
count=1;
}

}
}

解决方案 »

  1.   

    public static void increment(Count c ,int times ){
    c.count++;
    times++;
    }
    看看上面这个是你第一个程序。你这里虽然把times++了。但是你并没有返回。。所以导致最后你加来加去times还是初始的值啊
      

  2.   

    同楼上的, java中都是值传递的, increment(mycount,times);只把times=0 做一个copy而已,然后运算public static void increment(Count c ,int times ){
    c.count++;
    times++;
    }
    结束以后,imcrement 里的times 生命周期也就结束了, main中的times还是0...