Que signifie «vide statique public» en Java?

149

Que fait public static void signifie Java?

Je suis en train d'apprendre. Dans tous les exemples du livre sur public static voidlequel je travaille, vient avant toute méthode utilisée ou créée. Qu'est-ce que ça veut dire?

David
la source

Réponses:

230

Ce sont trois choses complètement différentes:

publicsignifie que la méthode est visible et peut être appelée à partir d'autres objets d'autres types. D' autres alternatives sont private, protected, packageet package-private. Voir ici pour plus de détails.

staticsignifie que la méthode est associée à la classe, et non à une instance (objet) spécifique de cette classe. Cela signifie que vous pouvez appeler une méthode statique sans créer un objet de la classe.

voidsignifie que la méthode n'a pas de valeur de retour. Si la méthode retournait un, intvous écririez à la intplace de void.

La combinaison de ces trois éléments est le plus souvent vue sur la mainméthode que la plupart des didacticiels incluront.

Mark Byers
la source
12
Puisque le questionneur apprend toujours: l'ordre de ces mots-clés est également important. Tous les modificateurs premiers ( public, static, private, etc.) puis le type de retour ( voiddans ce cas).
Pindatjuh
1
@markbyres ok je comprends que vous répondez, je sais que la méthode principale doit être statique mais je n'ai aucune idée pourquoi elle est publique ?? y a-t-il une raison spécifique à cela ??
hardik
9
l'environnement d'exécution java doit appeler la méthode main pour démarrer votre application. il ne pouvait pas faire ça quand c'était privé.
Philipp
44

Les trois mots ont des significations orthogonales.

public signifie que la méthode sera visible à partir des classes d'autres packages.

staticsignifie que la méthode n'est pas attachée à une instance spécifique et qu'elle n'a pas de " this". C'est plus ou moins une fonction.

voidest le type de retour. Cela signifie "cette méthode ne renvoie rien".

Thomas Pornin
la source
22

Le public mot clé est un spécificateur d'accès, qui permet au programmeur de contrôler la visibilité des membres de la classe. Lorsqu'un membre de classe est précédé de public, alors ce membre est accessible par du code en dehors de la classe dans laquelle il est déclaré. (Le contraire de public est privé, ce qui empêche un membre d'être utilisé par du code défini en dehors de sa classe.)

Dans ce cas, main( )doit être déclaré public, car il doit être appelé par du code en dehors de sa classe au démarrage du programme.

Le mot-clé static permet main( )d'être appelé sans avoir à instancier une instance particulière de la classe. Ceci est nécessaire car main( )est appelé par l'interpréteur Java avant la création de tout objet.

Le mot-clé void indique simplement au compilateur qu'il main( )ne renvoie pas de valeur. Comme vous le verrez, les méthodes peuvent également renvoyer des valeurs.

utsav
la source
18

Cela signifie que:

  • public - il peut être appelé de n'importe où
  • static - il n'a aucun état d'objet, vous pouvez donc l'appeler sans instancier un objet
  • void - ça ne renvoie rien

On pourrait penser que l'absence de retour signifie qu'il ne fait pas grand-chose, mais cela peut enregistrer des choses dans la base de données, par exemple.

Paul Tomblin
la source
4

Cela signifie trois choses.

First publicsignifie que tout autre objet peut y accéder.

static signifie que la classe dans laquelle elle réside n'a pas besoin d'être instanciée avant que la fonction puisse être appelée.

void signifie que la fonction ne renvoie pas de valeur.

Puisque vous êtes juste en train d'apprendre, ne vous inquiétez pas trop des deux premiers jusqu'à ce que vous en appreniez davantage sur les cours, et le troisième n'aura pas beaucoup d'importance tant que vous ne commencerez pas à écrire des fonctions (autres que principales).

Le meilleur conseil que j'ai eu en apprenant à programmer, et que je vous transmets, est de ne pas vous soucier des petits détails que vous ne comprenez pas tout de suite. Obtenez un aperçu général des principes fondamentaux, puis revenez en arrière et préoccupez-vous des détails. La raison en est que vous devez utiliser certaines choses (comme public static void) dans vos premiers programmes qui ne peuvent pas vraiment être bien expliquées sans vous apprendre d'abord un tas d'autres choses. Alors, pour le moment, acceptez simplement que c'est comme ça que ça se fait et passez à autre chose. Vous les comprendrez sous peu.

Aaron
la source
3

Compte tenu de la classe typique de haut niveau. Seuls les modificateurs d'accès public et sans modificateur peuvent être utilisés au niveau supérieur, vous verrez donc public ou vous ne verrez aucun modificateur d'accès.

`` static`` est utilisé parce que vous n'aurez peut-être pas besoin de créer un objet réel au niveau supérieur (mais parfois vous voudrez le faire pour ne pas toujours voir / utiliser static. Il y a d'autres raisons pour lesquelles vous n'incluez pas static aussi mais c'est celui typique au niveau supérieur.)

voidest utilisé car généralement vous n'allez pas renvoyer une valeur du niveau supérieur (classe). (parfois, vous voudrez renvoyer une valeur autre que NULLso void peut ne pas toujours être utilisée non plus, en particulier dans le cas où vous avez déclaré, initialisé un objet au niveau supérieur auquel vous attribuez une valeur).

Avertissement: Je suis moi-même un débutant, donc si cette réponse est fausse de quelque manière que ce soit, ne me pendez pas. Le jour, je suis un recruteur technique et non un développeur; le codage est mon passe-temps. De plus, je suis toujours ouvert aux critiques constructives et j'aime apprendre, alors n'hésitez pas à signaler toute erreur.

David Leak New York NY
la source
2
  • public signifie que vous pouvez accéder à la classe de n'importe où dans la classe / l'objet ou en dehors du package ou de la classe
  • static signifie constante dans laquelle le bloc d'instructions utilisé une seule fois
  • void signifie pas de type de retour
Saleem Bhayo
la source
6
Cette question a été correctement traitée, essayez peut-être de répondre à de nouvelles questions au lieu de répondre à des questions plus anciennes avec des informations en double. Merci.
Kev
C'est comme expliquer sur l'éléphant. Les gens essaient de l'expliquer en fonction de sa position. Je suis content de toutes les réponses ci-dessus, mais je me demande simplement comment quelqu'un peut-il dire "Achetez un livre en java".
Sulung Nugroho
2

Public - signifie que la classe (programme) est disponible pour une utilisation par toute autre classe.

Static- crée une classe. Peut également être appliqué aux variables et aux méthodes, ce qui en fait des méthodes / variables de classe au lieu d'être simplement locales à une instance particulière de la classe.

Void- cela signifie qu'aucun produit n'est retourné lorsque le cours termine le traitement. Comparez cela avec les classes d'assistance qui fournissent une valeur de retour à la classe principale, elles fonctionnent comme des fonctions; ceux-ci ne sont pas vides dans la déclaration.

user647200
la source
0

staticsignifie que la méthode est associée à la classe, et non à une instance (objet) spécifique de cette classe. Cela signifie que vous pouvez appeler une méthode statique sans créer un objet de la classe. En raison de l'utilisation d'un staticmot main()- clé est votre première méthode à être invoquée .. staticn'a pas besoin d'un objet pour l'instance ... donc, main( )est appelée par l'interpréteur Java avant que les objets ne soient créés.

mahi
la source