Java中的'public static void'是什么意思?

161

public static void在Java中是什么意思?

我正在学习过程中。在我所使用的书籍中,所有的示例都是在任何正在被使用或创建的方法之前使用public static void。这是什么意思呢?

9个回答

272

这其实是三件完全不同的事情:

public 表示该方法可见,可以从其他类型的其他对象中调用。其他选择包括 privateprotectedpackagepackage-private。详情请参阅此处

static 表示该方法与类相关联,而不是该类的特定实例(对象)。这意味着你可以在不创建类的对象的情况下调用静态方法。

void 表示该方法没有返回值。如果该方法返回一个整数,那么应该使用 int 代替 void

这三者的组合最常见于 main 方法,这也是大多数教程所涉及的。


13
由于提问者仍在学习:这些关键字的顺序也很重要。所有修饰符先写 (public, static, private等),然后是返回类型 (void 在这种情况下)。 - Pindatjuh
1
@markbyres 好的,我明白你的回答了,我知道 main 方法必须是静态的,但我不知道为什么它要是 public 的?这有什么特定的原因吗? - hardik
10
Java运行时环境必须调用主方法来启动您的应用程序。如果它是私有的,它就无法这样做。 - Philipp

50

这三个词的含义是正交的。

public 表示该方法可以从其他包中的类中访问。

static 表示该方法不附属于特定的实例,并且没有 "this"。它更像是一个函数。

void 是返回类型。它表示"该方法不返回任何值"。


28

public 关键字是一种访问修饰符,它允许程序员控制类成员的可见性。当一个类成员被 public 修饰时,该成员可以被在其声明类之外的代码所访问。(public 的相反是 private,它防止成员被定义在其类之外的代码所使用。)

在这种情况下,main( )必须声明为 public,因为当程序启动时,它必须被声明在类之外的代码所调用。

static 关键字使得 main( ) 可以被调用而不必实例化类的一个特定实例。这是必要的,因为在任何对象被创建之前,main( ) 就会被 Java 解释器调用。

void 关键字只是告诉编译器,main( ) 不返回任何值。正如您将看到的,方法也可以返回值。


21

这意味着:

  • public - 可在任何地方调用
  • static - 没有对象状态,因此可以在不实例化对象的情况下调用
  • void - 不返回任何值

虽然没有返回值,但它可能会将东西保存在数据库中。


7

它意味着三件事情。

首先,public 表示任何其他对象都可以访问它。

static 表示它所在的类在函数被调用之前不需要实例化。

void 表示该函数不返回值。

由于您刚开始学习,不要太担心前两个问题,直到您学习了类为止。第三个问题在您开始编写函数(除了主函数)之前并不重要。

我在学习编程时得到的最好的建议是,不要担心你立即不理解的小细节。首先要广泛了解基础知识,然后再回过头来关注细节。原因是您必须在第一次编写程序时使用一些东西(如public static void),如果没有教授其他相关知识,很难解释清楚。因此,暂时接受这是正确的方法,然后继续前进。您很快就会理解它们。


4

Public - 表示该类(程序)可供任何其他类使用。

Static - 创建一个类。也可以应用于变量和方法,使它们成为类方法/变量,而不仅仅是局部于类的特定实例。

Void - 这意味着当类完成处理时不返回任何产品。与提供返回值给主类的辅助类相比,这些操作类似于函数;这些没有在声明中使用void。


4
考虑到典型的顶级类。在顶级,只能使用public和no modifier访问修饰符,所以你要么看到public,要么根本不会看到任何访问修饰符。
“static”是因为您可能没有需要在顶级创建实际对象(但有时您会想这样做,因此您可能不会总是看到/使用static。还有其他原因,为什么您不包括static,但这是在顶级的典型原因)。
“void”是因为通常您不会从顶级(类)返回一个值。(有时您将想要返回除“NULL”之外的值,因此也可能不总是使用void,特别是当您已经在顶级声明、初始化一个对象,并将一些值分配给它时)。
免责声明:我自己也是新手,如果这个答案有任何错误,请不要责备我。白天我是技术招聘人员而不是开发人员;编码是我的爱好。此外,我始终乐于接受建设性批评并喜欢学习,因此请随时指出任何错误。

感谢您提供有用的信息,因为它涉及到一种不同的理解该主题的方法。 - serif

3
  • public 表示你可以从类/对象内部或外部的包或类中访问该类
  • static 表示常量,仅在语句块中使用一次
  • void 表示没有返回类型

6
这个问题已经得到充分回答了,请尝试回答一些新的问题,而不是重复提供相同信息的旧问题。谢谢。 - Kev
1
这就像是解释大象一样。人们试图根据自己的立场来解释它。我对以上所有答案都很满意,但我想知道怎么可能有人说“买一本Java书”。 - Sulung Nugroho

1
“static”意味着该方法与类相关联,而不是与该类的特定实例(对象)相关联。这意味着您可以调用静态方法而无需创建类的对象。 由于使用了“static”关键字,“main()”是要被调用的第一个方法。 “static”不需要任何对象实例。 因此,在任何对象被创建之前,Java解释器会先调用“main()”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接