有一道不是很懂,谁能帮我看一下。谢谢了。

冯乾中 2013-04-14
class Rect
{
  private int height=1;
  private int width=1;
  public static int count;
  public void set(int height,int width)
  {
    this.height=height;
    this.width=width;                                                                       

    count++;
  }
}
public class Ex
{
  public static void main(String args[])
  {
    Rect r1=new Rect();
    Rect r2=new Rect();
    r1.set(7,8);
    r2.set(9,5);
    System.out.println(r1.count+" " +r2.count+" "+Rect.count);
  }
}
以上是代码,输出的为2 2 2  我想问一下原因。谢谢了。
xiaogui363 2013-04-15
public static int count;

这里count是个静态变量,静态变量不属于某个实例对象,而是属于类。
静态变量不需要创建任何实例对象,在程序加载的时候就会分配内存空间,而且在内存中只有一个这个变量。

所以不管你怎么访问这个变量,得到的值都是一样的。

上面的代码中两次调用了set方法,每调用一次count就自增1,所以count的值就是2了。
冯乾中 2013-04-15
哦。有点明白了。谢谢了。
Global site tag (gtag.js) - Google Analytics