| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:24:24
|
efcjunior
Virtual Machine Man
Membro desde: 14/12/2006 20:38:28
Mensagens: 520
Offline
|
Bom dia galera, estou estudando java e embora seja compreensível a sintaxe ou a lógica, eu tenho tido dúvida quanto ao método principal:
public static void main(String[]) args);
eu sei que é o primeiro método a ser executado, sem ele a jvm não compila o programa, também sem que ele não retorna nenhum valor. Agora, porque ele é public, static, não poderia ser dinâmico ? Outra dúvida, String[] é um tipo de classe, mas qual é função dela ?
Galera, estou tendo aula e estou me esforçando com o livro do Deitel, mas eles não consigaram me clarear as idéias. Aqui eu tenho certeza que vocês me ajudarão !!!
Valeu galera Alto nível !!!!
|
Sun Certified Java Programmer 98% |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:29:07
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
public, static, não poderia ser dinâmico?
Todo programa Java (em formato .class ou .jar) é executado por um programa em C++ chamado "java.exe".
A primeira coisa que ele faz é procurar na classe que você passou como parâmetro, um método chamado "main" , que seja público (public), e que ele não precise instanciar um objeto da classe para chamar - é por isso que ele tem de ser static. Outra coisa que o programa em C++ faz é passar os argumentos da linha de comando para essa classe, nessa variável "args". Ou seja, se você tem um programa:
java MeuTeste joao maria jose
ele chama o método "public static main" da classe MeuTeste e preenche a variável args com os seguintes valores:
args[0] = "joao"
args[1] = "maria"
args[2] = "jose"
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:30:40
|
Adriano Almeida
JavaEvangelist
![[Avatar]](/images/avatar/080eb9c2c128e1337fcc84d8680f404c.jpg)
Membro desde: 13/09/2006 15:29:34
Mensagens: 386
Offline
|
Só uma outra coisa:
efcjunior wrote: eu sei que é o primeiro método a ser executado, sem ele a jvm não compila o programa
Compila sim! Ele não é obrigatório!
|
Twitter: @adrianoalmeida7
http://ahalmeida.com
http://blog.caelum.com.br

|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:48:15
|
Fabiano
JavaBaby
![[Avatar]](/images/avatar/f016e59c7ad8b1d72903bb1aa5720d53.png)
Membro desde: 21/07/2003 08:37:12
Mensagens: 77
Localização: Joinville/SC
Offline
|
pafuncio wrote:Só uma outra coisa:
efcjunior wrote: eu sei que é o primeiro método a ser executado, sem ele a jvm não compila o programa
Compila sim! Ele não é obrigatório!
Exatamente, o máximo que vai ocorrer é o código não ser executado por você não ter a classe main. Casos assim vão ocorrer quando você declarar uma classe que somente vai ter as variáveis e os getters and setters dessas variáveis, por exemplo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:50:33
|
georgesq
JavaGuru
![[Avatar]](/images/avatar/42e7aaa88b48137a16a1acd04ed91125.png)
Membro desde: 09/12/2002 12:25:25
Mensagens: 208
Localização: SP
Offline
|
a função do String[] é poder receber n parametros de linha de comando sem um limite informado.
public static é, se a classe q contem o main precisasse de um new pra existir, quem seria a primeira a fazer o new para depois chamar a próxima.
no caso de se utilizar este é para o caso de um aplicativo que vc qr chamar o mesmo diretamente.
espero ter ajudado
[s]
baiano
|
SCJP 1.5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 14:54:58
|
efcjunior
Virtual Machine Man
Membro desde: 14/12/2006 20:38:28
Mensagens: 520
Offline
|
Por exemplo, passando aquele seu programa para o java , ele ficaria assim:
public class MeuTeste
{
public static void main(String[] args)
{
System.out.println("João");
System.out.println("Maria");
System.out.println("Jose");
ou
System.out.println("João Maria Jose");
}
}
-Então quando é necessário instanciar um objeto, o método não é Static ?
-Sem o método main ele poderá até ser compilado, mas não executado, certo ?
-Estou percebendo que eu vou ter grande dificuldade de organizar o meu raciocínio para visualizar os dados na memória. Porque eu entendi o que é instanciar um objeto, mas não sei como este objeto é estruturado na memória.
Valeu galera !!!
|
Sun Certified Java Programmer 98% |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2007 20:59:26
|
Fabiano
JavaBaby
![[Avatar]](/images/avatar/f016e59c7ad8b1d72903bb1aa5720d53.png)
Membro desde: 21/07/2003 08:37:12
Mensagens: 77
Localização: Joinville/SC
Offline
|
efcjunior wrote:
-Então quando é necessário instanciar um objeto, o método não é Static ?
Assim, métodos que não são static e são chamados por outros métodos static, obriga o objeto a ser instanciado (isso falando de métodos na mesma classe). Se você quer usar outro objeto você sempre vai precisar instanciá-lo. Método static é aquele método que está disponível para acesso em todo o programa mesmo não tendo sido a classe instanciada. (Obs.: pode ser que eu tenha falado besteira, conceito nunca foi meu forte, heheheheh...)
Abaixo um exemplo de um código onde você teria duas classes. Vou instanciar uma delas e alimentar os valores dela a partir da classe principal. Como você pode ver, a segunda classe não tem o método main mas compila, OK?
Se você tiver mais alguma dúvida ou se não fui claro em alguma coisa, pode postar novamente.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/03/2007 02:26:42
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
efcjunior wrote:Bom dia galera, estou estudando java e embora seja compreensível a sintaxe ou a lógica, eu tenho tido dúvida quanto ao método principal:
public static void main(String[]) args);
eu sei que é o primeiro método a ser executado, sem ele a jvm não compila o programa, também sem que ele não retorna nenhum valor. Agora, porque ele é public, static, não poderia ser dinâmico ? Outra dúvida, String[] é um tipo de classe, mas qual é função dela ?
Galera, estou tendo aula e estou me esforçando com o livro do Deitel, mas eles não consigaram me clarear as idéias. Aqui eu tenho certeza que vocês me ajudarão !!!
Valeu galera Alto nível !!!!
1) Não é a JVM que compila, é o compilador , o javac.
2) O compilador não tem problemas se falta um main no seu codigo. Ele aceita isso. O main não é obrigatório. Vc não consegue correr o programa sem ele, mas ele não é obrigatório do ponto de vista do compilador. Por exemplo, uma biblioteca de terceiros não tem main.
public significa que o método é acessivel de qualquer ponto do codigo.
static significa que não é necessário criar um objeto para usar esse método, ele pertence à classe e não ao objeto. Não existe tal coisa como "dinâmico"
String[] significa "array de String" os [] significam array. Array é um tipo especial de dado.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2011 21:45:00
|
cesarbruno16
Debugger
![[Avatar]](/images/avatar/bf494562d310aae05d1b99cec470a56f.jpg)
Membro desde: 25/05/2010 02:31:51
Mensagens: 50
Localização: Recife - PE
Offline
|
Poxa valeu mesmo, nem sabia que podia passar parâmetros pelo console, mas tem como passar parâmetros pelo metodo run() também?
This message was edited 1 time. Last update was at 29/09/2011 21:46:56
|
Você veio sem pedir e vai embora sem querer, então a ti basta somente aguentar o que é passageiro! "living at codes!"
=======================================================
[]Bruno César de Andrade
Desenvolvedor de Softwares
e-Mail: bruno.andrade@pitang.com
----------------------------------------------------------------------------------------
"O segredo do Sucesso é a constância do propósito"
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/10/2011 07:45:24
|
Rachel da Silveira Campos
JavaTeenager
![[Avatar]](/images/avatar/94a17b32720e835ec9f9ff71445f2426.jpg)
Membro desde: 20/08/2010 10:19:23
Mensagens: 162
Localização: São Paulo
Offline
|
Bom dia!!
O parênteses depois do identificador main indica que ele é um bloco de construção do programa, chamamos de método. Este método deve ser chamado main, caso contrário, a JVM não executará o aplicativo.
Simplificando as coisas, onde há a declaração de uma classe e a de um método , devemos saber que toda aplicação Java começa por um ponto de entrada, que é o método main.
public static void main(String[] args):
public:
Pode ser chamado por qualquer outro objeto.
static:
Ele pertence à classe e não ao objeto.
void:
Não retorna valor, quando você vai executar uma aplicação Java com o interpretador Java, você vai especificar o nome daquela classe que você quer que rode, ele vai invocar o método main() definido dentro daquela classe que você pretende rodar.
String[]:
Aceita um argumento simples: arrays de Strings.
Espero que ajude!!
Se estiver esquecendo de alguma coisa, por favor me alertem!!
[]s
This message was edited 1 time. Last update was at 04/10/2011 07:46:40
|
www.queldevelopj.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2011 19:03:34
|
ricksouto
Thread.start()
Membro desde: 01/06/2011 13:16:56
Mensagens: 42
Offline
|
Pessoal eu estou revivendo esse tópico pois tenho uma dúvida muito parecida:
o comando "public static void main(String [] args) { ...}" tem que estar na minha classe principal, porém, eu preciso colocar essa linha nas outras classes que irão ser chamadas pela classe principal através de listeners?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2011 19:12:26
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
ricksouto wrote:Pessoal eu estou revivendo esse tópico pois tenho uma dúvida muito parecida:
o comando "public static void main(String [] args) { ...}" tem que estar na minha classe principal, porém, eu preciso colocar essa linha nas outras classes que irão ser chamadas pela classe principal através de listeners?
Não. O método main (com essa assinatura) é o ponto de entrada da aplicação. Nele que a execução começa. Suas outras classes serão normalmente usadas para construir objetos e usar seus métodos.
[]'s
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2011 19:16:09
|
ricksouto
Thread.start()
Membro desde: 01/06/2011 13:16:56
Mensagens: 42
Offline
|
Entendi, porém no meu caso aqui eu criei uma classe principal e logo após criei um JDialog, porém o window builder automaticamente cria essa linha de comando "public static void main...", dai eu apaguei e deixei apenas o método construtor e dai parou de abrir o JDialog na classe principal.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 10:41:10
|
ricksouto
Thread.start()
Membro desde: 01/06/2011 13:16:56
Mensagens: 42
Offline
|
Pessoal eu fiz um teste aqui, criei um novo frame e coloquei apenas o nome da classe e um método construtor com um jlabel, e não coloquei a linha public static void main..., dai quando eu chamei ele na classe principal abriu certinho, porém quando uso o JDialog sem o public static void main... ele não abre e ainda trava a classe principal quando tento chamá-lo.
Alguém ai sabe me dizer o porque?
|
|
|
 |
|
|