Was bedeutet "öffentliche statische Leere" in Java?

149

Was public static voidbedeutet in Java?

Ich bin dabei zu lernen. In allen Beispielen in dem Buch, an dem ich arbeite, public static voidsteht vor jeder Methode, die verwendet oder erstellt wird. Was bedeutet das?

David
quelle

Antworten:

230

Es sind drei völlig verschiedene Dinge:

publicbedeutet, dass die Methode sichtbar ist und von anderen Objekten anderer Typen aufgerufen werden kann. Andere Alternativen sind private, protected, packageund package-private. Sehen Sie hier für weitere Details.

staticbedeutet, dass die Methode der Klasse zugeordnet ist, nicht einer bestimmten Instanz (Objekt) dieser Klasse. Dies bedeutet, dass Sie eine statische Methode aufrufen können, ohne ein Objekt der Klasse zu erstellen.

voidbedeutet, dass die Methode keinen Rückgabewert hat. Wenn die Methode ein zurückgeben intwürde, würden Sie intstattdessen schreiben void.

Die Kombination aller drei ist am häufigsten bei der mainMethode zu sehen, die in den meisten Tutorials enthalten sein wird.

Mark Byers
quelle
12
Da der Fragesteller noch lernt: Die Reihenfolge dieser Schlüsselwörter ist ebenfalls wichtig. Alle Modifikatoren erster ( public, static, private, usw.) , dann der Rückgabetyp ( voidin diesem Fall).
Pindatjuh
1
@markbyres ok ich verstehe, dass du antwortest, ich weiß, dass die Hauptmethode statisch sein muss, aber ich habe keine Ahnung, warum sie öffentlich ist? Gibt es einen bestimmten Grund dafür?
Hardik
9
Die Java-Laufzeitumgebung muss die Hauptmethode aufrufen, um Ihre Anwendung zu starten. das konnte es nicht, wenn es privat war.
Philipp
44

Die drei Wörter haben orthogonale Bedeutungen.

public bedeutet, dass die Methode in Klassen in anderen Paketen sichtbar ist.

staticbedeutet, dass die Methode nicht an eine bestimmte Instanz angehängt ist und kein " this" hat. Es ist mehr oder weniger eine Funktion.

voidist der Rückgabetyp. Es bedeutet "diese Methode gibt nichts zurück".

Thomas Pornin
quelle
22

Das öffentliche Schlüsselwort ist ein Zugriffsspezifizierer, mit dem der Programmierer die Sichtbarkeit von Klassenmitgliedern steuern kann. Wenn einem Klassenmitglied public vorangestellt ist, kann auf dieses Mitglied über Code außerhalb der Klasse zugegriffen werden, in der es deklariert ist. (Das Gegenteil von öffentlich ist privat, wodurch verhindert wird, dass ein Mitglied von Code verwendet wird, der außerhalb seiner Klasse definiert ist.)

In diesem Fall main( )muss als öffentlich deklariert werden, da es beim Starten des Programms durch Code außerhalb seiner Klasse aufgerufen werden muss.

Mit dem Schlüsselwort static kann main( )aufgerufen werden, ohne dass eine bestimmte Instanz der Klasse instanziiert werden muss. Dies ist erforderlich, da main( )es vom Java-Interpreter aufgerufen wird, bevor Objekte erstellt werden.

Das Schlüsselwort void teilt dem Compiler lediglich mit, dass main( )kein Wert zurückgegeben wird. Wie Sie sehen werden, können Methoden auch Werte zurückgeben.

utsav
quelle
18

Es bedeutet, dass:

  • public - Es kann von überall aufgerufen werden
  • static - Es hat keinen Objektstatus, sodass Sie es aufrufen können, ohne ein Objekt zu instanziieren
  • void - Es gibt nichts zurück

Sie würden denken, dass das Fehlen einer Rückgabe bedeutet, dass es nicht viel tut, aber es könnte zum Beispiel Dinge in der Datenbank speichern.

Paul Tomblin
quelle
4

Es bedeutet drei Dinge.

Erstens publicbedeutet, dass jedes andere Objekt darauf zugreifen kann.

static bedeutet, dass die Klasse, in der sie sich befindet, nicht zuerst instanziiert werden muss, bevor die Funktion aufgerufen werden kann.

void bedeutet, dass die Funktion keinen Wert zurückgibt.

Da Sie gerade erst lernen, sorgen Sie sich nicht zu sehr um die ersten beiden, bis Sie etwas über Klassen lernen, und die dritte spielt keine große Rolle, bis Sie anfangen, Funktionen zu schreiben (außer Hauptfunktionen).

Der beste Rat, den ich beim Programmieren gelernt habe und den ich Ihnen weitergebe, ist, sich keine Sorgen um die kleinen Details zu machen, die Sie nicht sofort verstehen. Verschaffen Sie sich einen umfassenden Überblick über die Grundlagen, gehen Sie dann zurück und kümmern Sie sich um die Details. Der Grund ist, dass Sie einige Dinge (wie public static void) in Ihren ersten Programmen verwenden müssen, die nicht wirklich gut erklärt werden können, ohne Sie zuerst über eine Reihe anderer Dinge zu unterrichten. Akzeptieren Sie für den Moment einfach, dass dies so gemacht wird, und fahren Sie fort. Sie werden sie in Kürze verstehen.

Aaron
quelle
3

Betrachtet man die typische Spitzenklasse. Auf der obersten Ebene dürfen nur öffentliche und keine Modifikator-Zugriffsmodifikatoren verwendet werden, sodass entweder öffentlich angezeigt wird oder überhaupt kein Zugriffsmodifikator angezeigt wird.

`static`` wird verwendet, weil Sie möglicherweise kein tatsächliches Objekt auf der obersten Ebene erstellen müssen (aber manchmal möchten Sie dies, sodass Sie möglicherweise nicht immer statisch sehen / verwenden. Es gibt andere Gründe, warum Sie statisch nicht einschließen würden auch, aber dies ist das typische auf der obersten Ebene.)

voidwird verwendet, weil Sie normalerweise keinen Wert von der obersten Ebene (Klasse) zurückgeben. (Manchmal möchten Sie einen anderen als den NULLungültigen Wert zurückgeben , der möglicherweise nicht immer verwendet wird, insbesondere dann, wenn Sie ein Objekt auf der obersten Ebene deklariert und initialisiert haben, dem Sie einen Wert zuweisen.)

Haftungsausschluss: Ich bin selbst ein Neuling. Wenn diese Antwort in irgendeiner Weise falsch ist, hängen Sie mich bitte nicht auf. Tagsüber bin ich ein Tech-Recruiter und kein Entwickler. Codierung ist mein Hobby. Außerdem bin ich immer offen für konstruktive Kritik und lerne gerne. Bitte zögern Sie nicht, auf Fehler hinzuweisen.

David Leck New York NY
quelle
2
  • public bedeutet, dass Sie von überall in der Klasse / im Objekt oder außerhalb des Pakets oder der Klasse auf die Klasse zugreifen können
  • static bedeutet Konstante, in der der Anweisungsblock nur einmal verwendet wurde
  • void bedeutet kein Rückgabetyp
Saleem Bhayo
quelle
6
Diese Frage wurde angemessen behandelt. Versuchen Sie möglicherweise, neue Fragen zu beantworten, anstatt ältere Fragen mit doppelten Informationen zu beantworten. Vielen Dank.
Kev
Es ist wie eine Erklärung über Elefanten. Die Leute versuchen es zu erklären, je nachdem, wo er steht. Ich bin mit all den obigen Antworten zufrieden, frage mich aber nur, wie jemand sagen kann: "Kauf ein Buch und Java".
Sulung Nugroho
2

Public - bedeutet, dass die Klasse (das Programm) für jede andere Klasse verfügbar ist.

Static- erstellt eine Klasse. Kann auch auf Variablen und Methoden angewendet werden, sodass sie Klassenmethoden / -variablen sind und nicht nur lokal für eine bestimmte Instanz der Klasse.

Void- Dies bedeutet, dass kein Produkt zurückgegeben wird, wenn die Klasse die Verarbeitung abgeschlossen hat. Vergleichen Sie dies mit Hilfsklassen, die einen Rückgabewert für die Hauptklasse bereitstellen. Diese funktionieren wie Funktionen. Diese sind in der Erklärung nicht ungültig.

user647200
quelle
0

staticbedeutet, dass die Methode der Klasse zugeordnet ist, nicht einer bestimmten Instanz (Objekt) dieser Klasse. Dies bedeutet, dass Sie eine statische Methode aufrufen können, ohne ein Objekt der Klasse zu erstellen. Wegen der Verwendung eines staticSchlüsselwortsmain() Ihre erste Methode ist, die aufgerufen staticwird, muss kein Objekt zur Instanz gehören. Wird daher main( )vom Java-Interpreter aufgerufen, bevor Objekte erstellt werden.

Mahi
quelle