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