在java中public void与public static void有什么区别

如题所述

我们换个简单易懂的说法,这两句的区别就在于,能不能直接用类名访问。

很好理解的不是吗?

假如,我有一个类,如下图所示:

接下来先实例化一个对象,ca,你会发现它不仅可以访问普通的方法,也可以访问静态的方法

那这又有什么用呢?如果每次我用一个类的方法之前我都要实例化一下这个类,那么无疑是对内存资源的浪费。于是乎,静态方法就带来了便利,如下图所示:


希望以上对你有所帮助。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-30
public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用;public static void 修饰是静态方法,属于类,使用类名.方法名直接调用。正如答主 @小透明 所说,非静态方法之间可以互相调用,非静态方法也可以调用静态方法;但是静态方法不可以直接调用(未初始化的)非静态方法。由于 public static void main 作静态方法,所以遵循这个原则。但是 Java 可以通过对象名调用静态方法(对象名.静态方法)。Java 中不会导致语法错误(syntax error),但是不推荐这样使用,静态方法与非静态方法调用时应当绝对区分;而且其他 OOP 语言如 C#,Swift,Objective-C 都没有这样的语法。
第2个回答  2017-10-30
static:静态方法可以直接通过类名调用,任何实例也可以调用,声明为static的变量其实就是全局变量,不能以任何方式引用this或者super
(如果是static修饰的不需要实例化对象,就可以引用成员)本回答被提问者采纳
相似回答