java中静态方法的目的

Sik*_*waz 10 java static

我对java中静态方法的使用感到困惑,例如,如果main 方法是静态的,那么它是有意义的 ,但是在编码时我们有对象,例如

 JFrame frame= new JFrame(); 
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// here why not frame.EXIT_ON_CLOSE
Run Code Online (Sandbox Code Playgroud)

我们使用的方式相同

 GridBagConstraints c= new GridBagConstraints();// we have an object but still
 c.anchor = GridBagConstraints.PAGE_END; 
Run Code Online (Sandbox Code Playgroud)

那么有人可以解释一下,我有什么特别的理由吗?

das*_*ght 9

静态方法和字段属于类中的所有对象,而不属于非静态方法,属于类的特定实例.在您的示例中,无论JFrame frame您创建多少个对象,访问frame.EXIT_ON_CLOSE都会产生相同的结果.为了明确说明这一事实,使用static成员(也称为"类成员").

相同的逻辑适用于静态方法:如果方法不访问实例变量,则其结果将独立于对象的状态.该main(String[] args)方法就是一个这样的例子.其他常见示例包括各种工厂方法,基元的解析方法等.这些方法不在实例上运行,因此它们被声明为静态.

  • 我想补充一点,静态方法通常都喜欢数学函数.意味着没有副作用,并且对于相同的输入始终具有相同的输出. (3认同)

kos*_*osa 7

JFrame.EXIT_ON_CLOSE不是一种方法.这是静态场.看到这个文档.

如果您不希望某些与类不对象关联的功能,则可以使用静态方法.