import javax.swing.*; 
public class FrameTest { 
public static void main(String[] args) 

SimpleFrame frame=new SimpleFrame(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true); 
} } 
class SimpleFrame extends JFrame 

public SimpleFrame() 

setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); 
}
public static final int DEFAULT_WIDTH=300; 
public static final int DEFAULT_HEIGHT=200; } 
好多GUI程序设计里面都用静态常量定义,我把static除掉之后仍然可以执行,为什么一定要用static 呢?比如:SimpleFrame.DEFAULT_WIDTH;在程序中也用不到呀,完全没有必要设计成静态常量的?我知道static的意思是什么,我问的是这里为什么要用static,好像不用也可以。

解决方案 »

  1.   

    因为静态常量会在类加载的时候被初始化,所以你可以像JFrame.EXIT_ON_CLOSE这样直接引用这个常量.这样,你就不需要创建某一个实例来引用这个常量了,这样做不是节省很多内存空间了么?另外,静态常量是不可变的,这样不但容易记,也使程序的安全性能大大的增加了.
    这样说明白了不?
      

  2.   

    public SimpleFrame()  
    {  
    setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  
    }这里不是用了吗???
    有些值不会改变的,就用一个常量去表示啊。用static 可以用类直接去访问,而不需要创建对像后再去访问
      

  3.   

    补充,static 使变量成为类变量,而不属于具体的对象,每个SimpleFrame对象都公用一个static变量
      

  4.   

    用final设为常量就不再改变,所以所有该类的实例的这个值相同,用static就共用一个内存空间存储该值,且可以通过类直接调用。