Java中的“使用类名调用静态方法”和“使用对象调用静态方法”之间有什么区别吗?

mad*_*dan 6 java static

在Java中,我们既可以“使用类名调用静态方法”,又可以“使用对象调用静态方法”“使用类名称调用静态方法”和“使用对象调用静态方法”之间有什么区别?在java中?

Jun*_*san 5

没有区别,但建议static以静态方式调用方法,即使用 ClassName。如果不这样做,静态分析器通常会报告错误。

这里需要理解的重要一点是,static方法是无状态的,因此使用实例调用它们会让阅读代码的人感到困惑。因为无论您使用哪个实例来调用该static方法,结果都将保持不变。这是因为static方法属于类而不属于对象。


Pra*_*kar 1

在内部,new ClassName().staticMethod();被视为ClassName.staticMethod()。所以没有区别。它只会造成混乱。考虑一个例子

public class StaticDemo {

    static int staticVar = 10;

    public static void main(String [] args){

    System.out.println(new StaticDemo().staticVar);
    System.out.println(StaticDemo.staticVar);

    }

}
Run Code Online (Sandbox Code Playgroud)

这输出

10
10
Run Code Online (Sandbox Code Playgroud)

`

即使你写了new StaticDemo().staticVar,也会被认为是StaticDemo.staticVar。因此根本没有区别,并且始终使用类表示法以避免混淆。