Qual(is) a(s) diferença(s) entre static e const?

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. :wink:

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 :slight_smile: