Dúvidas de iniciantes

4 respostas
C

Bom dia galera,
Seguinte estou começando com a tecnologia Java e estou tendo certos problemas, pois fiz o código abaixo e esta dando o seguinte erro quando tento executar:

Exception in thread “main” java.lang.NoSuchMethodError: main

Alguem pode me dar uma ajuda em relação a esse problema?

public class FirstClass{

int var1;

int var2;
public void main(){
		var1 = 1;
		var2 = 34;

		System.out.println(var1+var2);
	}
}

Outra coisa é que não estou entendendo muito bem na hora de elaborar um metódo, por exemplo posso fazer assim public void main(), mas tambem assim public static void main() ou public void main(String[] args)

Não estou entendendo direito o pq de tantas formas e qual o significado de cada uma

Caso alguem consiga me ajudar…desde já agradeço.

4 Respostas

B

Ola,

Para o metodo main em java não há muito o que discutir… ele não é muito “flexível”, ele tem que ser public, para que qq um possa acessá-lo, ele tem que static, para que não dependa de uma instancia da classe, tem que bser void, pois não retorna nada, e tem que ter o nome main e receber sempre um array de strings, que são para se recuparar possíveis parametros passados a aplicação, então temos:

... public static void main(String[] args){ ...

Se vc tentar colocar outra assinatura para o metodo a JVM não o achará… sendo que na assinatura dele pode-se incluir declaração de “throws” alguma exception…

C

mto obrigado mesmo …
deu certo agora…e td intendido…
vou continuar aqui e qualquer coisa pode deixar q eu grito outra vez ahuahuahaa

vlww

B

“cimarinos”:
mto obrigado mesmo …
deu certo agora…e td intendido…
vou continuar aqui e qualquer coisa pode deixar q eu grito outra vez ahuahuahaa

vlww

Tranquilo… a galera tá sempre a postos pra ajudar :cool:

S

A assinatura de um método compreende várias coisas e em termos gnericos é assim:

[visibilidade] [detalhes de implementação] [retorno] [nome] ( [argumentos] )

Se algumas destas coisas é diferente então é outro método!

[visibilidade] um de : public, private , protected , se não for colocado nenhum dos três isso tb é um nivel de visibilidade chamado package (pacote) . são 4 niveis.

[detalhes de implementação]:
static - o método pertence à classe, não ao objeto
final - não pode ser sobreescrito
native - é um método implementado com codigo nativo via JNI
abstract - não tem implementação. A classe filha deve implementar este método.
strictfp - força a adoção do padrão IEEE para cálculos com float e double.

[retorno]
void - sem retorno
qualquer dos tipos primitivos ou qualquer classe

[nome]
qualquer nome

[argumentos]
lista de argumentos separados por virgula. Cada argumento tem um tipo e um nome. Exemplo String[] args : String[] significa um array de string, args é o nome do argumento.

então

public void main()

public static void main()

pubic static void main(String args)

pubic static void main(String[] args)

São todos métodos diferentes.
A JVM procura apenas pelo ultimo. Se não encontra, dá o erro que viste.

Nota:
É possível definir métodos com assinaturas iguais,em que a única diferença é a lista de argumentos. Esses métodos dizem-se sobrecarregados (overloaded). não confundir com sobreescrita (overwriten).

Criado 27 de fevereiro de 2007
Ultima resposta 27 de fev. de 2007
Respostas 4
Participantes 3