[DUVIDA] método main

7 respostas
xwillianss

Porque o metodo main é compilado sem o “static” e quando roda da erro?

//programa em Java public class MeuPrograma { public void main(String[] args){ System.out.println("Jesus vai me ensinar a programar em Java!! \n\n Porque Jesus é o caminho a verdade e a vida!"); } }

7 Respostas

j0nny

xwillianss:
Porque o metodo main é compilado sem o “static” e quando roda da erro?

//programa em Java public class MeuPrograma { public void main(String[] args){ System.out.println("Jesus vai me ensinar a programar em Java!! \n\n Porque Jesus é o caminho a verdade e a vida!"); } }

Pq independente de quantos objetos existirem dessa sua classe, é o método main estatico da CLASSE que sempre será executado…

pvrsouza

Vai dar erro porque o método main é estático porque está disponíveis para a execução sem uma instância do objeto. Portanto sem ele teria que ser instanciado.

vitor_lima

Ele é compilado porque não há nenhum erro de sintaxe em escrever public void main(String args[]).
Vc está declarando um método normal com o nome main.

Mas quando vc vai executar a classe, a JVM procura pelo método public static void main(String args[]) e não encontra, por isso dá erro …

rafael_queiroz

Não é um erro de sintaxe, não tem problemas ao ser compilado.

É um erro de semântica, não roda pois não tem Sentido.

xwillianss

rafael_queiroz:
Não é um erro de sintaxe, não tem problemas ao ser compilado.

É um erro de semântica, não roda pois não tem Sentido.


Como não tem sentido?
Quer dizer então que eu não posso criar um método chamado main indepedente dele ser executável ou não? Neste caso eu não posso criar dois métodos main na mesma classe?
Confesso que fiquei confuso agora! :smiley:
Neste caso método estáticos são métodos que não precisam ser instanciados? :roll:

rafael_queiroz

Não faz sentido, pois o método “main” deve ser estatico para rodar, ou seja, no javac OK, sintaxe OK, no java NÃO, semântica NÃO.
Sim, você pode criar mais de um método “main”, mas o executável será o “void” “estático”, porque métodos estáticos não precissam ser instaciado para funcionar, o executável tenta acessar MeuPrograma::main(); e não MeuPrograma programa= new MeuPrograma(); programa.main();

peczenyj

Rodar o método estático main de dada assinatura quando vc invoca uma classe através do executavel java é convenção.

Se não for estático, significa que deve ser criada uma instância do classe. Que construtor usar? O padrão? E se o objeto for de criação complexa, levando ao uso de fabricas, ou não fizer sentido, como um caso de uma classe de teste que lê 2 inteiros da stdin e retorna a soma deles? No fim das contas o uso do main static faz mais sentido :wink:

Criado 12 de fevereiro de 2010
Ultima resposta 17 de fev. de 2010
Respostas 7
Participantes 6