1、为什么counter始终为1? 2、怎样在main方法中输出counter的值? 求大神分析一下,感觉很混乱。

RJ-Wang 2017-07-04 06:55:53
public class Mix4{
int counter = 0;
public static void main( String [] args){
int count = 0;
Mix4 [] m4a = new Mix4[20];
int x = 0;
while(x < 9){
m4a[x] = new Mix4();
m4a[x].counter = m4a[x].counter + 1;//m4a[0].counter==1,counter变为1吗?
count = count + 1;
count = count + m4a[x].maybeNew(x);
x = x+1;
}
System.out.println(count+" "+m4a[1].counter);
}
public int maybeNew(int index){
if(index<5){
Mix4 m4 = new Mix4();
System.out.println("counter:"+counter);
//我在这里输出了一下,counter==1,也就是传进来时counter值就为1了,是上面那个位置改的吗?那下面的m4.counter不应该==2吗,为什么仍然==1?
m4.counter=m4.counter+1;
System.out.println("counter:"+counter);
//我又输出了一下counter,为什么依然为1,m4.counter改变不了吗?
return 1;
}
return 0;
}
}
...全文
318 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RJ-Wang 2017-07-04
  • 打赏
  • 举报
回复
那也就是说maybeNew方法中的第一个System.out.println("counter:"+counter);实际上输出的是m4a[x].counter的值而并非counter的值? 那Mix4方法中counter的值怎样都不会改变吗? 谢谢亲
lifewell1 2017-07-04
  • 打赏
  • 举报
回复
Mix4 m4 = new Mix4(); 已经初始化了 m4.counter=0; m4.counter=m4.counter+1;自然变成1 永远不可能是2 System.out.println("counter:"+counter); counter是当前对象的属性 m4 不等于当前对象 所有counter和 m4.counter不相干
lifewell1 2017-07-04
  • 打赏
  • 举报
回复
嗯 记得打分哦亲

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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