Para distinguir entre esses dois irmãos, antes de tudo, precisamos saber o que são. Primeiro, pegue a variável do membro.
Variáveis de membros
Vamos estudar uma coisa:
Atributos: características externas; como altura e peso humano
Comportamento: o que você pode fazer; Por exemplo, as pessoas têm comportamentos como falar, jogar basquete, etc.
Na linguagem Java, a unidade mais básica é uma classe e as classes são usadas para refletir as coisas.
O mesmo vale para descrever as coisas com as classes de classe:
Atributo: variáveis de membros na classe correspondente
Comportamento: funções de membro na classe correspondente
Definir uma classe é na verdade um membro (variáveis de membro e funções de membro) na classe
Expansão: Uma classe é um conceito abstrato, e um objeto é a existência concreta e a personificação de uma classe. Por exemplo: o carro na vida pode ser considerado uma classe, que chamamos de classe do carro. Cada carro possui um número de cor e pneu (pode ser definido como um atributo, ou seja, variável de membro), e cada carro pode ser executado (ou seja, o comportamento do carro, correspondente à função total do membro da classe). Se instanciarmos o carro, produziremos um objeto, como Mercedes-Benz e BMW (BMW).
Demo1:
Classe de classe pública {cor de corda privada; // define a cor do carro, variável global privada int numluntai; // Defina o número do pneu do carro, Variável Global Public Car (cor da corda, int numluntai) {super (); this.color = cor; this.numluntai = numluntai; } public void run () {System.out.println (this.numluntai + "rodas" + this.color + "O carro está dirigindo na estrada"); }} classe pública CLASSTEST {public static void main (string [] args) {car bmw = novo carro ("preto", 4); // Crie um objeto sedan com o nome BMW BMW.run (); }}Resultados em execução:
Um sedan preto com 4 rodas está dirigindo na estrada
Entre eles, cores e numluntai são chamadas de variáveis de membros da classe de carros. Esta propriedade pode ser usada para descrever as propriedades de uma classe. Caso contrário, deve ser definido como uma variável local.
Por exemplo, eu em um loop for uma variável local.
for (int i = 0; i <args.length; i ++) {
......
}
Por exemplo, uma variável é gravada em um método de membro como uma variável local.
PublicClass Car {Private String Color; // define a cor do carro, variável global privada int numluntai; // Defina o número do pneu do carro, Variável Global Public Car (cor da corda, int numluntai) {super (); this.color = cor; this.numluntai = numluntai; } public void run () {string carname = "bmw"; // este é o System.out.println (this.numluntai + "rodas" + this.color + carname + "O carro está dirigindo na estrada"); }} publicClass Classtest {public static void main (string [] args) {car bmw = novo carro ("preto", 4); // Crie um objeto sedan com o nome BMW BMW.run (); }}resultado:
O sedan BMW preto com 4 rodas está dirigindo na estrada
A diferença entre variáveis de membros e variáveis locais
Variáveis de membro:
① As variáveis de membros são definidas na classe e podem ser acessadas em toda a classe.
② As variáveis de membro são estabelecidas com o estabelecimento do objeto, desaparecem com o desaparecimento do objeto e existem na memória da heap onde o objeto está localizado.
③ Variáveis de membro têm valores de inicialização padrão.
Variáveis locais:
① As variáveis locais são definidas apenas no escopo local, como: dentro de funções, dentro de declarações etc., e são válidas apenas na área a que pertencem.
② As variáveis locais existem na memória da pilha. Quando o escopo de sua função terminar, o espaço variável será lançado automaticamente.
③ As variáveis locais não têm valores de inicialização padrão
Os princípios que precisam ser seguidos ao usar variáveis são: Princípio da proximidade
Primeiro, pesquise no escopo local, use -o se houver um; Em seguida, pesquise na posição do membro.
Posso estar um pouco confuso quando vejo isso. Deixe -me resolver um exemplo abaixo. Se você pensa com cuidado, é realmente muito simples.
Vamos dar uma olhada em um código simples primeiro.
Primeiro eu defini uma aula de pessoa.
Pessoa da classe pública {private Int Age = 1000; // Definir variáveis de membros, a idade é 1000 Public Void Setrage (int Age) {Age = Age; System.out.println ("idade dentro do método"+idade); } public void dizhello () {System.out.println ("Minha idade é"+idade+"."); }}Em seguida, crie um objeto na função principal e emite -o.
Pessoa p = nova pessoa (); p.setage (20); p.sayhello ();
Qual é o resultado da saída? Não é que imaginamos que minha idade tem 20 anos, mas o seguinte:
// A idade dentro do método é 20 // minha idade é 1000.
Na verdade, é fácil entender se você pensar sobre isso.
Em uma palavra, se houver nomes diferentes, o nome da variável no método representa uma variável de membro; Se houver os mesmos nomes, o nome da variável no método representa apenas uma variável local e não tem relação com a variável de membro.
Então, primeiro, quando criamos um objeto de pessoa P, a variável de membro foi inicializada ao criar o objeto. O valor inicial da idade variável do membro é 1000.
Quando o P.Setage (20), os 20 realmente funcionam apenas no método definido, portanto, os 20 anos no método são emitidos. Depois de executar esta frase, os 20 são destruídos.
Em seguida, execute Sayhello e a idade nele representa o valor da variável de membro, para que ainda seja 1000.
Se você ainda não consegue entender aqui, pode escrever o código para ver os resultados da saída e experimentá -lo.
Portanto, quando o mesmo nome é usado, queremos deixar esse nome de variável representar uma variável de membro. Existe alguma maneira?
Então temos que falar sobre essa palavra -chave. Mudamos a classe de pessoa para isso:
public class Pessoa {private Int Age = 1000; public void Setage (int Age) {this.age = Age; System.out.println ("idade dentro do método"+idade); } public void dizhello () {System.out.println ("Minha idade é"+idade+"."); }}Execute o código novamente e consulte que o resultado da execução do código se torna o seguinte:
// A idade dentro do método é 20 // minha idade é de 20 anos.
Isso representa o objeto atual.
Isso aqui indica especificamente que o valor da idade do objeto P (ou seja, a idade variável do membro do objeto P) é 20.
Embora a essência dos dois seja variável, há uma grande diferença quando usada, e você pode cair em uma armadilha se não tomar cuidado. Lembre -se primeiro: em uma classe, se uma variável puder ser usada para descrever as propriedades de uma classe, ela é definida como uma variável de membro; caso contrário, deve ser definida como uma variável local. Se você não consegue entender, escreva mais código e poderá entender.