Variavel ou ponteiro?

Ao instanciar um objeto, exemplo:
Calculadora calc = new Calculadora();
Podemos dizer que calc é uma variavel ou o correto seria dizer que é um ponteiro já que armazena um endereço de memoria

É um objeto.

Em Java não existe o conceito de ponteiros como conhecemos de outras linguagens como C ou C++. O que nós temos é o conceito de referência.

No seu exemplo, calc é uma variável e ela pode ser uma…

  • variável de classe
  • variável de instância
  • variável local

… dependendo do contexto em que vc a declarou.

Agora sobre o que a variável calc contém, podemos dizer que é um objeto como o @Fefo80 comentou ou, mais precisamente, uma referência à um objeto ou ainda, uma referência à uma instância da classe Calculadora.

Vc deve deixar de lado essa noção de “endereço de memória” quando trabalha com Java. A variável calc não armazena o endereço real, mas sim uma referência àquela instância. Como essa referência é gerenciada é com a JVM.

3 curtidas

Isso lembra aquela antiga discussão sobre:

Em java, os parâmetros são passados por valor ou por referência?

Sabe dizer como anda esta discussão? É porque é muito estranho, pois na linguagem Java a passagem é sempre por valor e não existe ainda o conceito de “passagem por referência” como existe em linguagens como C++, C#, PHP, etc.

Ah, eh coisa antiga, hoje, quase não vejo mais pessoal discutindo isso. A confusão (inclusive que eu tinha) era qdo um objeto era passado como parâmetro. Mas hoje entendo que eh tudo por valor também.

2 curtidas