¿Qué significa 'vacío estático público' en Java?

149

¿Qué public static voidsignifica en Java?

Estoy en proceso de aprendizaje. En todos los ejemplos del libro en el que estoy trabajando, public static voidaparece antes de cualquier método que se esté utilizando o creando. ¿Qué significa esto?

David
fuente

Respuestas:

230

Son tres cosas completamente diferentes:

publicsignifica que el método es visible y se puede llamar desde otros objetos de otros tipos. Otras alternativas son private, protected, packagey package-private. Ver aquí para más detalles.

staticsignifica que el método está asociado con la clase, no con una instancia específica (objeto) de esa clase. Esto significa que puede llamar a un método estático sin crear un objeto de la clase.

voidsignifica que el método no tiene valor de retorno. Si el método devuelve un int, escribiría en intlugar de void.

La combinación de estos tres se ve más comúnmente en el mainmétodo que incluirán la mayoría de los tutoriales.

Mark Byers
fuente
12
Como el interlocutor todavía está aprendiendo: el orden de estas palabras clave también es importante. Todos los modificadores primero ( public, static, private, etc.) entonces el tipo de retorno ( voiden este caso).
Pindatjuh
1
@markbyres ok, entiendo tu respuesta, sé que el método principal debe ser estático, pero no tengo idea de por qué es público. ¿Hay alguna razón específica para eso?
hardik
9
El entorno de ejecución de Java debe llamar al método principal para iniciar su aplicación. No podía hacer eso cuando era privado.
Philipp
44

Las tres palabras tienen significados ortogonales.

public significa que el método será visible desde las clases en otros paquetes.

staticsignifica que el método no está asociado a una instancia específica y no tiene " this". Es más o menos una función.

voides el tipo de retorno Significa "este método no devuelve nada".

Thomas Pornin
fuente
22

La palabra clave pública es un especificador de acceso, que permite al programador controlar la visibilidad de los miembros de la clase. Cuando un miembro de la clase está precedido por público, entonces se puede acceder a ese miembro mediante un código fuera de la clase en la que se declara. (Lo contrario de público es privado, lo que evita que un miembro sea utilizado por código definido fuera de su clase).

En este caso, main( )debe declararse como público, ya que debe llamarse por código fuera de su clase cuando se inicia el programa.

La palabra clave static permite main( )ser llamada sin tener que instanciar una instancia particular de la clase. Esto es necesario ya que main( )el intérprete de Java lo llama antes de que se cree ningún objeto.

La palabra clave void simplemente le dice al compilador que main( )no devuelve un valor. Como verá, los métodos también pueden devolver valores.

utsav
fuente
18

Esto significa que:

  • public - se puede llamar desde cualquier lugar
  • static - no tiene ningún estado de objeto, por lo que puede llamarlo sin instanciar un objeto
  • void - no devuelve nada

Se podría pensar que la falta de un retorno significa que no está haciendo mucho, pero podría estar guardando cosas en la base de datos, por ejemplo.

Paul Tomblin
fuente
4

Significa tres cosas.

Primero publicsignifica que cualquier otro objeto puede acceder a él.

static significa que la clase en la que reside no tiene que ser instanciada antes de poder llamar a la función.

void significa que la función no devuelve un valor.

Como solo estás aprendiendo, no te preocupes demasiado por los dos primeros hasta que aprendas sobre las clases, y el tercero no importará mucho hasta que comiences a escribir funciones (aparte de la principal).

El mejor consejo que recibí cuando aprendí a programar, y que te paso, no te preocupes por los pequeños detalles que no entiendes de inmediato. Obtenga una visión general de los fundamentos, luego regrese y preocúpese por los detalles. La razón es que tiene que usar algunas cosas (como public static void) en sus primeros programas que realmente no se pueden explicar bien sin enseñarle primero un montón de otras cosas. Entonces, por el momento, simplemente acepta que así es como se hace, y sigue adelante. Los entenderás en breve.

Aaron
fuente
3

Teniendo en cuenta la típica clase de nivel superior. Solo se pueden usar modificadores de acceso público y sin modificador en el nivel superior, por lo que verá público o no verá ningún modificador de acceso.

`static`` se usa porque es posible que no tenga la necesidad de crear un objeto real en el nivel superior (pero a veces querrá hacerlo, por lo que es posible que no siempre vea / use static. Hay otras razones por las que no incluiría static también, pero este es el típico en el nivel superior).

voidse usa porque generalmente no va a devolver un valor del nivel superior (clase). (a veces querrá devolver un valor que no sea NULLtan nulo, no siempre se puede usar, especialmente en el caso de que haya declarado, inicializado un objeto en el nivel superior al que está asignando algún valor).

Descargo de responsabilidad: soy un novato, así que si esta respuesta es incorrecta de alguna manera, no me cuelgue. De día soy un reclutador de tecnología, no un desarrollador; La codificación es mi pasatiempo. Además, siempre estoy abierto a críticas constructivas y me encanta aprender, así que no dude en señalar cualquier error.

David Leak Nueva York NY
fuente
2
  • public significa que puede acceder a la clase desde cualquier lugar de la clase / objeto o fuera del paquete o clase
  • static significa constante en el que el bloque de enunciado se usa solo 1 vez
  • void significa que no hay tipo de retorno
Saleem Bhayo
fuente
66
Esta pregunta se ha cubierto adecuadamente, quizás intente responder nuevas preguntas en lugar de responder preguntas anteriores con información duplicada. Gracias.
Kev
Es como explicar sobre el elefante. La gente trata de explicarlo dependiendo de dónde se encuentre. Estoy contento con todas las respuestas anteriores, pero me pregunto cómo alguien puede decir "Comprar un libro en Java".
Sulung Nugroho
2

Public - significa que la clase (programa) está disponible para su uso por cualquier otra clase.

Static- Crea una clase. También se puede aplicar a variables y métodos, convirtiéndolos en métodos / variables de clase en lugar de solo locales a una instancia particular de la clase.

Void- esto significa que no se devuelve ningún producto cuando la clase completa el procesamiento. Compare esto con las clases auxiliares que proporcionan un valor de retorno a la clase principal, estas funcionan como funciones; estos no tienen nulo en la declaración.

usuario647200
fuente
0

staticsignifica que el método está asociado con la clase, no con una instancia específica (objeto) de esa clase. Esto significa que puede llamar a un método estático sin crear un objeto de la clase. Debido al uso de una staticpalabra clave main()es el primer método que se invoca ... staticno necesita ningún objeto para instanciar ... por lo tanto, main( )el intérprete de Java lo llama antes de que se cree ningún objeto.

mahi
fuente