| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 12:44:31
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Bom, metodos e propriedades declarados como "static" sao comuns a todas instancias de determinado objeto, ou seja, ha apenas uma referencia na memoria independentemente da quantidades de objetos criados.
A duvida eh: isso reduz o consumo de memoria, "otimiza" o programa? por exemplo, digamos que eu tenha os metodos "void escreve(), int retornaMultiplicacao(int, int)" e a propriedade "String nomeDaClasse". Nao vejo uma razao para nao declarar tais como static, ja que nao dependem de algo que mude de objeto para objeto. Dessa forma, se eu tiver 4 referencias para objetos da classe X, teria apenas uma referencia para os metodos 'escreve, retornaMultiplicacao" e uma referencia para "nomeDaClasse" na memoria.
Ta certo essa minha colocacao?
Se estiver, entao eh recomendavel declarar tudo o que foi possivel como static?
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 13:58:17
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
As chamadas de método static são MUITO mais rápidas que as não static. Porque? Porque eles sao resolvidos em tempo re compilacao, e nao de execucao!
Tipo
Object o = new String("paulo");
System.out.println(o.toString());
Aqui, a resposta será "paulo", e não "java.lang.Object@1df47a". Porque? Porque eh feita uma chamada de metodo virtual, ele chama o toString da verdadeira classe do objeto.
Agora, experiemente fazer isso para um metodo estatico. O metodo chamado seria o da classe Object, e nao da String.
Essa procura do metodo que ele deve chamar, eh LENTA em java. Tipo, nao muito lenta, mas consome tempo. Por isso metodos estaticos sao muito mais rapidos na chamada.
Usa sempre metodos estaticos? Nunca. Dessa maneira voce estaria perdendo o bem mais valioso do java, a orientacao a objetos.
Voce quer deixar seus metodos da sua classe sendo executado mais rapidamente? Declare a classe final! Porque? Porque assim o java fica esperto, e nao precisa procurar que metodo chamar, ja que ele sabe que aquela classe nao tem subclasses! Louco neh?
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 15:35:30
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Bom, mas ainda fica uma duvida: quando eh conveniente declarar como static e quando nao? ( tirando as respostas obvias como compartilhar recursos )..
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 15:43:07
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
Usa static quando a chamada de metodo que voce for fazer, nao envolve nenhuma instancia da classe que voce quer colcoar o metodo static
melhor: quando voce eprcebe que aquele metodo poderia estar em qualquer outra classe!
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 15:46:03
|
aconstantino
Virtual Machine Man
![[Avatar]](/images/avatar/3295c76acbf4caaed33c36b1b5fc2cb1.png)
Membro desde: 14/09/2002 16:37:24
Mensagens: 698
Offline
|
utilizar static em varíaveis
somente em variáveis globais
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 16:45:08
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
blackhat wrote:utilizar static em varíaveis
somente em variáveis globais
Nao eh bem assim
Pode ter uma variavel staic que seja private. Static na eh utilizado apenas para "emular" variaveis globais.
Sem contar os metodos estaticos.
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 16:58:47
|
aconstantino
Virtual Machine Man
![[Avatar]](/images/avatar/3295c76acbf4caaed33c36b1b5fc2cb1.png)
Membro desde: 14/09/2002 16:37:24
Mensagens: 698
Offline
|
Acho que é inútil declarar uma variável static como private ja que static normalmente é chamado Classe.ALGUMACOISASTATIC ou até mesmo um método.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 17:09:14
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
blackhat wrote:Acho que é inútil declarar uma variável static como private...
Inutil nao eh. Considere isso:
dessa maneira vc nao pode acessar "contador" diretamente, mas garante que todas as intstancias da classe vao compartilhar a mesma variavel entre si.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2002 18:05:24
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
exatamente
alias, tem gente que programa sem NUNCA escrever uma variavel PUBLIC, soh metodos....
outra coisa, para voce fazer um SINGLETON, precisa de um provate static
a hora certa de vc escrever um public static eh pra constantes, ai viria um final tambem
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
|
|