Se o main tive um static executa tudo que tem dentro de si né, n precisando de criar instancias dos metodos, certo?
É só?
não sei se já leu este tutorial do guj, mas
acredito que isto vá te ajudar =]
Um método ou atributo que seje static, significa que este é da Classe e não do objeto, por isto que não há necessidade de ter uma estancia para acessar.
Acabei de ler e ainda não fiquei esclarecido da utilidade do static e quando se deve usar!
Declarar algo como static também permite você acessar as coisas directamente, ou seja, sem precisar criar uma instância da classe! Entendi até aqui, certo. Acho que vejo a utilidade do static, mas tal utilidade é somente verdadeira se for para o main, né? Pra outro metodo n vejo utilidade, ne? O static main faz correr todos os metodos que esta dentro do main sem precisar de invocar os metodos, certo? ao fazer correr o static main, este executa tudo de uma vez! tou certo?
Cara, é simples, uma grande utilização de static é seu uso como uma função, imagina toda vez que vc fosse escrever algo na tela com System.out.println() ou algo assim vc tivesse que instanciar um objeto do tipo PrintWriter. Imagina se quisesse realizar operações comuns com números utilizando o pacote Math e tivesse que instanciar um objeto. Utilize o static quando tiver que realizar rotinas comuns, isto é, funções…
no java n existem funcoes mas sim metodos!
n entendi ainda a utilidade e funcao verdadeira do static.
alguem possa explicar?
o que vc prefere:
[code]ObjetoParaEscrever o = new ObjetoParaEscrever();
ObjetoMatematico m = new ObjetoMatematico();
o.println(“Hello World”);
o.println("Cos (0) = " + m.cos(0.0));
[/code]
ou
System.out.println("Hello World!");
System.out.println("Cos (0) = " + Math.cos(0.0));
o que o renandemelo quis dizer é que, por exemplo veja a classe:
public class Exemplo {
public static int somar (int x, int y) {
return (x + y); //exemplo ridiculo, mas dá pra ter uma idéia
}
public int multiplicar (int x,int y) {
return (x*y);
}
public static void main(String args[]){
//imagine que você vai ter que chamar diversas vezes os métodos acima...
System.out.println("" + somar(2,3));
//vários códigos
System.out.println("" + somar(3,7));
//mais códigos, agora imagine se fosse um método não estático..
Exemplo x = new Exemplo();
System.out.println("" + x.multiplicar(4,7));
//imagine! você teve que alocar um espaço na memória só pra chamar o
// multiplicar(int x,int y)? isso não é lá tão necessário...
}
}
viu a diferença? com o static você pode chamar a hora que quiser…
e um método non-static, você vai ter que chama-lo criando uma instância da classe…
ou então pegando o exemplo do renandemelo, imagine ter que criar instâncias, alocar espaço em memória(mesmo que pequeno), para chamar o Math.pow()? o Math.abs()?
=P
consegui te fazer entender?
espero que sim =D
grato!
parceiro so para vc entender melhor static eh algo que nao muda… eh aquilo e pronto por exemplo muito bem antes de vc nascer e eu tb, a formula de PI é a mesma ate hj e pelo visto isso n vai mudar… se vc desejar calcular algo, o PI é a mesma formula, para conversao de C para F eh a mesma formula, para saber um percentual de X eh a mesma coisa isso eh static!! acho q deu para entender ± a ideia de ter algo static.
[quote]no java n existem funcoes mas sim metodos!
n entendi ainda a utilidade e funcao verdadeira do static.
alguem possa explicar? [/quote]
Cara, eu sei que em Java não existem funções, o que eu quis dizer foi que você normalmente utiliza métodos static como funções, como se fosse uma linguagem livre de contexto.
Porque alguns métodos simplesmente não dependem de instância… Você também pode usar static quando quiser que todos os objetos de uma mesma classe retornem o mesmo valor de um método
[quote]com o static você pode chamar a hora que quiser…
e um método non-static, você vai ter que chama-lo criando uma instância da classe…
ou então pegando o exemplo do renandemelo, imagine ter que criar instâncias, alocar espaço em memória(mesmo que pequeno), para chamar o Math.pow()? o Math.abs()? [/quote]
quer dizer entao que com o static não tenho de alocar em memoria né? n tenho de criar uma instancia pra invocar o metodo certo? É só esta a verdadeira utilidade do static certo?
-
vc usa metodos e atributos estáticos quando quer que eles tenham o mesmo comportamento independente da instância. Todas as instancias tem acesso a estes métodos e atributos.
-
vc não pode sobrepor um método estático.
-
vc usa ‘static’ em classes estáticas aninhadas… coisa que vc vai ver no futuro, quem sabe…
um metodo ou variavel estatica é algo que executa de uma vez, certo? n é necessario criar instancias certo??
Sim!
Você apenas cria instâncias para objetos da classe e não para a classe!