Declaração e instanciação

Três conceitos que serão vistos frequentemente em programação imperativa:

Declaração

Trata-se de "dizer que uma variável existe". Em código:

int x;
String name;
double thing;

Perceba que essas variáveis não foram inicializadas: o que foi feito é uma declaração sem que houvesse uma inicialização, ou seja: dissemos que elas existem, mas não demos um valor.

Porém:

int x = 0;

Estamos declarando x e inicializando.

Instanciação

Instanciar é criar um valor novo, a grosso modo. Por exemplo:

int x = 0;  // Instanciamos o valor 0, que é um número inteiro
int y = 10; // Instanciamos o valor 10, que é um número inteiro
int z = x;  // Instanciamos um valor novo que é uma *cópia* do valor de `x`

String name = "Alice"; // Instanciamos uma String com o texto "Alice"
String fullname = "Alice" + " " + "Cooper";

Na última linha, instanciamos 5 String's, respectivamente:

  • Uma contendo o texto "Alice";
  • Outra contendo o texto " " (apenas um espaço em branco);
  • Outra contendo o texto "Cooper";
  • Outra sendo a concatenação de "Alice" e " ", que gera uma instância contendo "Alice ";
  • Por fim, outra sendo a concatenação de "Alice " e "Cooper', que gera uma instância contendo o texto "Alice Cooper".

Porém, foi declarada apenas uma variável: fullname. Uma situação semelhante pode ser vista em:

int x = 0;
x = 3;

Ainda temos apenas uma única variável declarada (x), porém inicialmente instanciamos o valor 0 e, em seguida, o valor 3.