静态方法调用在 Java 中如何工作?

How a static method call works in Java?

调用函数testFunc()时,我没有使用语法 Apples.testFunc()。然而代码运行成功。怎么会?

class Apples {
      
       public static void main(String args[] ) {
           testFunc();
       }   
       
       public static void testFunc() {
           System.out.println("Hello world!");
       }
    }
   

因为,静态方法在同一个class。因此,您不需要指定 class 名称。

如果在不同的class,则需要指定class名称。

记住: 非静态方法可以访问静态和非静态成员,而静态方法只能访问静态成员。

例如:

调用不同 class 中存在的静态方法,您需要这样做:

import com.example.Test;

public class Apples {

   public static void main(String args[]) {
      Test.testFunc();
   }   
}

package com.example;

public class Test {

   public static void testFunc() {
      System.out.println("Hello world!");
   }

}

您的函数 testFunc() 与函数 main 位于同一 class 中。所以你不需要在函数 testFunc() 之前使用 class 名称。

当为class分配内存时,静态方法或静态变量在class内分配内存。所以我们可以使用 class 名称访问静态成员函数或数据变量。 我们可以像下面这样调用静态函数

class Main1 {

    public static void main(String args[] ) {
        Main1.testFunc();
    }   

    public static void testFunc() {
        System.out.println("Hello world!");
    }
 }

class Main1 {

    public static void main(String args[] ) {
        testFunc();
    }   

    public static void testFunc() {
        System.out.println("Hello world!");
    }
 }

答案是一样的,但是当静态函数在其他 class 中时,我们必须使用 classname 来调用它