Che cosa significa "vuoto statico pubblico" in Java?


149

Cosa public static voidsignifica in Java?

Sto imparando. In tutti gli esempi nel libro su cui sto lavorando public static voidviene prima di qualsiasi metodo che viene utilizzato o creato. Cosa significa questo?

Risposte:


230

Sono tre cose completamente diverse:

publicsignifica che il metodo è visibile e può essere chiamato da altri oggetti di altri tipi. Altre alternative sono private, protected, packagee package-private. Vedi qui per maggiori dettagli.

staticsignifica che il metodo è associato alla classe, non a un'istanza specifica (oggetto) di quella classe. Ciò significa che è possibile chiamare un metodo statico senza creare un oggetto della classe.

voidsignifica che il metodo non ha valore di ritorno. Se il metodo restituisse un int, scriverebbe intinvece di void.

La combinazione di tutti e tre questi è più comunemente vista sul mainmetodo che includerà la maggior parte dei tutorial.


12
Poiché l'interrogante sta ancora imparando: anche l'ordine di queste parole chiave è importante. Tutti i modificatori primi ( public, static, private, ecc), allora il tipo di ritorno ( voidin questo caso).
Pindatjuh,

1
@markbyres ok ho capito che rispondi, so che il metodo principale deve essere statico ma non ho idea del perché sia ​​pubblico ?? c'è qualche motivo specifico per quello ??
Hardik,

9
l'ambiente di runtime java deve chiamare il metodo principale per avviare l'applicazione. non poteva farlo quando era privato.
Philipp

44

Le tre parole hanno significati ortogonali.

public significa che il metodo sarà visibile dalle classi in altri pacchetti.

staticsignifica che il metodo non è associato a un'istanza specifica e non ha " this". È più o meno una funzione.

voidè il tipo restituito. Significa "questo metodo non restituisce nulla".


22

La parola chiave pubblica è un identificatore di accesso, che consente al programmatore di controllare la visibilità dei membri della classe. Quando un membro della classe è preceduto dal pubblico, è possibile accedere a quel membro tramite un codice esterno alla classe in cui è dichiarato. (L'opposto del pubblico è privato, il che impedisce a un membro di essere utilizzato da un codice definito al di fuori della sua classe.)

In questo caso, main( )deve essere dichiarato come pubblico, poiché deve essere chiamato da un codice esterno alla sua classe all'avvio del programma.

La parola chiave static consente main( )di essere chiamata senza dover creare un'istanza di una determinata istanza della classe. Ciò è necessario poiché main( )viene chiamato dall'interprete Java prima che vengano creati eventuali oggetti.

La parola chiave void indica semplicemente al compilatore che main( )non restituisce un valore. Come vedrai, i metodi possono anche restituire valori.


18

Significa che:

  • public - può essere chiamato da qualsiasi luogo
  • static - non ha alcuno stato oggetto, quindi puoi chiamarlo senza creare un'istanza di un oggetto
  • void - non restituisce nulla

Penseresti che la mancanza di un ritorno significhi che non sta facendo molto, ma potrebbe salvare cose nel database, ad esempio.


4

Significa tre cose.

Innanzitutto publicsignifica che qualsiasi altro oggetto può accedervi.

static significa che la classe in cui risiede non deve essere istanziata prima di poter chiamare la funzione.

void significa che la funzione non restituisce un valore.

Dal momento che stai solo imparando, non preoccuparti troppo dei primi due fino a quando non impari le lezioni, e il terzo non importerà molto fino a quando non inizi a scrivere funzioni (tranne che principale).

Il miglior consiglio che ho ricevuto quando ho imparato a programmare e che ti passo avanti non è preoccuparti dei piccoli dettagli che non capisci subito. Ottieni un'ampia panoramica dei fondamenti, quindi torna indietro e preoccupati dei dettagli. Il motivo è che devi usare alcune cose (comepublic static void ) nei tuoi primi programmi che non possono davvero essere spiegate bene senza insegnarti prima un sacco di altre cose. Quindi, per il momento, accetta solo che è così e vai avanti. Li capirai a breve.


3

Considerando la tipica classe di alto livello. Solo i modificatori di accesso al modificatore pubblico e nessun modificatore possono essere utilizzati al livello superiore, quindi vedrai pubblico o non vedrai alcun modificatore di accesso.

`statico`` viene utilizzato perché potrebbe non essere necessario creare un oggetto reale al livello più alto (ma a volte lo vorrai, quindi potresti non sempre vedere / utilizzare statico. Ci sono altri motivi per cui non dovresti includere statico anche questo è quello tipico al livello più alto.)

voidviene utilizzato perché di solito non restituirai un valore dal livello superiore (classe). (a volte ti consigliamo di restituire un valore diverso da NULLcosì void potrebbe non essere sempre utilizzato, soprattutto nel caso in cui tu abbia dichiarato, inizializzato un oggetto al livello più alto al quale stai assegnando un valore).

Disclaimer: sono anch'io un principiante, quindi se questa risposta è errata in qualsiasi modo, per favore non impiccarmi. Di giorno sono un reclutatore di tecnologia, non uno sviluppatore; la programmazione è il mio hobby. Inoltre, sono sempre aperto a critiche costruttive e adoro imparare, quindi non esitare a segnalare eventuali errori.


2
  • public significa che puoi accedere alla classe da qualsiasi punto della classe / oggetto o al di fuori del pacchetto o della classe
  • static significa costante in cui blocco di istruzioni usato solo 1 volta
  • void significa nessun tipo di ritorno

6
Questa domanda è stata adeguatamente trattata, forse prova a rispondere a nuove domande invece di rispondere a domande più vecchie con informazioni duplicate. Grazie.
Kev

È come spiegare l'elefante. La gente cerca di spiegarlo dipende da dove si trova. Sono contento di tutte le risposte di cui sopra, ma mi chiedo solo come si può dire "Compra un libro un java".
Sulung Nugroho,

2

Public - significa che la classe (programma) è disponibile per l'uso da qualsiasi altra classe.

Static- crea una classe. Può anche essere applicato a variabili e metodi, rendendoli metodi / variabili di classe anziché solo locali in una particolare istanza della classe.

Void- ciò significa che nessun prodotto viene restituito quando la classe completa l'elaborazione. Confrontalo con le classi di supporto che forniscono un valore di ritorno alla classe principale, che operano come funzioni; questi non hanno nulla nella dichiarazione.


0

staticsignifica che il metodo è associato alla classe, non a un'istanza specifica (oggetto) di quella classe. Ciò significa che è possibile chiamare un metodo statico senza creare un oggetto della classe. A causa dell'uso di una staticparola chiave main()è il tuo primo metodo da invocare ... staticnon è necessario alcun oggetto per istanza ... quindi, main( )viene chiamato dall'interprete Java prima che vengano creati oggetti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.