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

3 respostas
Matchola

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.

3 Respostas

Lavieri

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...
public class Conta {
   private final String numero;
   
   public Conta(final String numero) {
       this.numero = numero;
   }
   
   public String getNumer() {
      return numero;
   }
   
   //...
}

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

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;
   }
   
   //...
}
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

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;
   }
   
   //...
}

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);
M

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:

LPJava

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:

Criado 14 de fevereiro de 2009
Ultima resposta 15 de fev. de 2009
Respostas 3
Participantes 4