Bom pessoal,
Eu queria saber qual a diferença entre static e const,
se são praticamente a msm coisa e só muda o nome,
ou se são completamente diferentes e eu entendi errado
q servem pra msm coisa
Vlw ai quem pode ajudar.
não são a mesma coisa… constante é algo que não tem o seu valor alterado… ou seja… o modificador final é que define uma constante…
uma constante pode estar em varios escopos… quando vc tem uma variável com static e final, ai vc tem uma constante que é unica para todo o programa a qualquer instancia do programa…
por exemplo, digamos que vc tenha uma classe chamada Conta, e que não seja possivel alterar o número da conta após a conta criada, então o número da conta é algo constante dentro do escopo de cada conta assim…
[code]public class Conta {
private final String numero;
public Conta(final String numero) {
this.numero = numero;
}
public String getNumer() {
return numero;
}
//…
}[/code]
para esta classe… cada conta tem uma constante… que é o seu número, para cada Conta criada esse valor nunca muda…
…
O modificador static é para indicar que aquela propriedade, não depende de uma instancia da classe, e sim que ela vale para todas as classes do programa…
por exemplo
[code]public class Conta {
private static Conta ultimaContaCriada;
public static getUltimaContaCriada() {
return ultimaContaCriada;
}
private final String numero;
public Conta(final String numero) {
this.numero = numero;
ultimaContaCriada = this;
}
public String getNumer() {
return numero;
}
//…
}[/code]
neste caso acima… cada vez que vc cria uma conta, o valor de ultima conta criada é alterado, e ele vale pra todas as contas, o modificador static indica que ele é um valor comum a todas as contas… sendo assim, vc acessa o valor assim
System.out.println(Conta.getUltimaContaCriada());
…
quando vc junta os 2… static + final… vc tem 1 constante que é a mesma em todo seu aplicativo… o seu valor não muda… pois o modificador final indica que é constante… e o modificador static indica que não depende de instancia da classe… assim por exemplo
[code]public class Conta {
public static final Banco BRASIL = new Banco(“Brasil”);
private static Conta ultimaContaCriada;
public static getUltimaContaCriada() {
return ultimaContaCriada;
}
private final String numero;
public Conta(final String numero) {
this.numero = numero;
ultimaContaCriada = this;
}
public String getNumer() {
return numero;
}
//…
}[/code]
neste caso o banco brasil é uma constante… ele não sera modificado nunca… e vc pode acessar através de Conta.BRASIL, por exemplo
System.out.println(Conta.BRASIL);
const é uma palavra chave não usada em Java. Em seu lugar é usado o final, que indica que determinada variável não pode ter sua referência alterada.
É importante não confundir final com static, uma vez que são coisas (bem) diferentes. Veja a explicação de Lavieri e pesquise aqui no fórum que achará várias explicações.
um atributo declarado como static pertence a class e uma const nao pertence a class e sim a um objetov instanciado. Tipo vc pode acessar uma variavel static sem precisa dar aquele new para o objeto lembra? Mas para const vc deve fazer isso.
Agora converte isso em code e manda ver… flw