Diferença Variável de Instância Variável e Variável Local
Variável de instância versus variável local
Uma variável de instância é um tipo de variável que está presente na programação orientada a objetos. É uma variável que é definida em uma classe, e cada objeto dessa classe possui uma cópia separada dessa variável. Por outro lado, o uso de variáveis locais não está limitado a linguagens de programação orientadas a objetos. É uma variável que pode ser avaliada apenas dentro de um determinado bloco de código (por exemplo, função, bloco de loop, etc.) em que está definido. Devido a esta razão, as variáveis locais têm um alcance local.
O que é uma variável de instância?
As variáveis de instância são usadas na programação orientada a objetos para armazenar o estado de cada objeto em uma classe. Eles também são conhecidos como variáveis de membros ou variáveis de campo. As variáveis de instância são declaradas sem usar a palavra-chave estática em Java. Os valores armazenados nas variáveis de instância são exclusivos de cada objeto (cada objeto possui uma cópia separada) e os valores armazenados neles representam o estado desse objeto. O espaço para uma variável de instância é alocado no heap, quando esse objeto é alocado no heap. Portanto, as variáveis de instância são mantidas na memória enquanto o objeto estiver ao vivo. Por exemplo, a cor de um carro é independente da cor de outro carro. Portanto, a cor de um objeto de carro pode ser armazenada em uma variável de instância. Na prática, as variáveis de instância são declaradas dentro de classes e métodos externos. Normalmente, as variáveis de instância são declaradas como privadas, de modo que só podem ser acessadas dentro da classe que é declarada.
O que é uma variável local?
Variáveis locais são variáveis com um escopo local e são declaradas dentro de um bloco de código específico. As variáveis locais podem ser vistas como variáveis que são usadas por um método para armazenar seu estado temporário. O escopo de uma variável local é determinado usando a localização que a variável é declarada, e palavras-chave especiais não são usadas para este propósito. Normalmente, o acesso a uma variável local é limitado dentro do bloco de código que é declarado (isto é, entre as chaves de abertura e de fechamento desse bloco de código). As variáveis locais geralmente são armazenadas na pilha de chamadas. Isso permitiria chamadas de função recursiva para manter suas próprias cópias das variáveis locais a serem armazenadas em espaços de endereço de memória separados. Quando o método termina sua execução, as informações sobre esse método saem da pilha de chamadas, além de destruir as variáveis locais que foram armazenadas.
Qual a diferença entre variável de instância e variável local?
As variáveis de instância são declaradas dentro das classes fora dos métodos e armazenam o estado de um objeto, enquanto as variáveis locais são declaradas dentro de blocos de código e são usadas para armazenar o estado de um método.Uma variável de instância é ao vivo, desde que o objeto que contém essa variável seja ao vivo, enquanto uma variável local estiver ao vivo durante a execução desse bloco de método / código. Uma variável de instância (que é declarada pública) pode ser acessada dentro da classe, enquanto que uma variável local só pode ser acessada dentro do bloco de código que é declarado. O uso de variáveis de instância é limitado apenas a programação orientada a objetos, enquanto que as variáveis locais não possuem essa limitação.