一尘不染

Java静态方法和实例方法之间的区别

java

我只是在阅读教科书中给我的课文,我不确定自己是否明白我在说什么。这基本上是在告诉我静态方法或类方法包括关键字“修饰符” static。但是我真的不知道那意味着什么吗?

有人可以简单地向我解释什么是静态方法或类方法吗?

另外,我可以简单解释一下什么是Instance方法吗?

这是他们在教科书中给我的:

存在或不存在静态修饰符具有重要的实际意义。一旦Java处理了它所属的类的定义,就可以调用并执行一个公共类方法。实例方法不是这种情况。在公共实例方法可以被调用和执行之前,必须创建它所属的类的实例。要使用公共类方法,您只需要类。另一方面,在使用公共实例方法之前,您必须具有该类的实例。

在另一个方法的定义内调用静态方法的方式根据这两个方法是否属于同一类而有所不同。在上面的示例中,阶乘和main都是MainClass类的方法。结果,在main的定义中对阶乘的调用仅引用方法名称“阶乘”。


阅读 447

收藏
2020-02-29

共1个答案

一尘不染

Java的基本范例是编写类,并实例化这些类。实例化的对象(类的实例)具有与它们相关联的属性(成员变量),这些属性会影响它们的行为;当实例执行其方法时,它将引用这些变量。

但是,所有特定类型的对象可能都具有完全不依赖于成员变量的行为。这些方法最好设为静态。由于是静态的,因此不需要类的实例即可运行该方法。

你可以执行以下操作来执行静态方法:

MyClass.staticMethod();//Simply refers to the class's static code

但是要执行非静态方法,你必须执行以下操作:

MyClass obj = new MyClass();//Create an instance
obj.nonstaticMethod();//Refer to the instance's class's code

在更深层次上,当编译器将一个类放在一起时,它包含一些指向方法的指针。当执行这些方法时,它将跟随指针并在远端执行代码。如果实例化了一个类,则创建的对象将包含一个指向“虚拟方法表”的指针,该指针指向继承层次结构中该特定类要调用的方法。但是,如果该方法是静态的,则不需要“虚拟方法表”:对该方法的所有调用都将进入内存中的确切位置,以执行完全相同的代码。因此,在高性能系统中,如果你不依赖实例变量,则最好使用静态方法。

2020-02-29