静态方法调用在 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 来调用它
调用函数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 来调用它