怪!第三行和最后行 m_id = 0 ,为什么不是1和4?

allen1981813 2009-09-27 10:40:31

main.java

public class Main
{
/**
* @param args the command line arguments
*/
public static void main( String[] args )
{
// TODO code application logic here
Counter.Increase.toIncrease();
new Counter();
new Counter();
Counter.Increase.toIncrease();
}//

}//

counter.java
public class Counter
{
private static int c_iCount = 0;

private int m_id = c_iCount++;

public int getCount()
{
return c_iCount;
}//

public int getID()
{
return m_id;
}//

@Override
public String toString()
{
return "m_id = " + getID() + " c_iCount = " + getCount();
}//

public static Counter Increase = new Counter()
{
@Override
public void toIncrease()
{
System.out.println( "toIncrease action!" );
c_iCount++;
System.out.println( toString() );
}//

};//

public Counter()
{
System.out.println( toString() );
}//

public void toIncrease()
{
System.out.println( "toIncrease doesnt action!" );
}//
} //
...全文
42 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
铑枪--突廆孒 2009-09-28
  • 打赏
  • 举报
回复
第三行打印出来的结果是由
第一句的:Counter.Increase.toIncrease();打印出来的。此时并没有改变其ID值,任为0。

第五行是由第四句Counter.Increase.toIncrease();打印出来的。注意:Increase是一个static变量,在第二次引用时不会去new Counter对象,只时任然使用第一句创建的的Counter对象来使用~~~而在整个程序中,除了初始化时对ID进行更改值以外,其它的地方没有更改任何值~~~~

62,614

社区成员

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

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