Este artigo analisa a diferença entre variáveis de membro e variáveis locais em Java com exemplos. Compartilhe com todos para sua referência. A análise específica é a seguinte:
Variáveis de membro: variáveis privadas definidas nesta classe pertencem a esta classe.
Crie e use variáveis de membro para copiar o código. O código é o seguinte: public class Person {.
Nome da sequência;
Sexo com cordas;
idade interna;
Altura dupla;
público estático void principal(String arges[])
{
Pessoa p=nova Pessoa();
p.name="Xiao Huang";
p.Sexo="Masculino";
p.idade=20;
p.Altura=1,7;
System.out.println("Nome:"+p.nome+",Gênero"+p.Sexo+",Idade:"+p.idade+",Idade:"+p.Altura);
}
}
Processo de inicialização de variável de membro
1. Inicialização da classe
Para inicialização de classe: a inicialização de classe geralmente é inicializada apenas uma vez, e a inicialização de classe inicializa principalmente variáveis de membros estáticos.
A compilação de uma classe determina o processo de inicialização da classe.
O arquivo de classe gerado pelo compilador faz principalmente as seguintes alterações nas classes definidas no arquivo de origem:
1) Primeiro declare variáveis de membro dentro da classe na ordem em que as variáveis de membro estáticas são definidas.
2) Inicialize de acordo com a sequência de inicialização das variáveis de membro na classe Java original.
A conversão correspondente entre uma classe java e a classe compilada é a seguinte:
Arquivo fonte:
Copie o código da seguinte forma: public class Person{
public static String nome = "Zhang San";
idade interna estática pública;
estático{
idade=20;
System.out.println("Idade de inicialização");
}
endereço de string estático público;
estático{
endereço = "Pequim";
idade=34;
}
public static void main(String[] args) {
System.out.println(nome);
System.out.println(idade);
System.out.println(endereço);
}
}
Quando o código-fonte Java é convertido em um arquivo de classe, ele é convertido em um código semelhante ao seguinte:
Copie o código da seguinte forma: public class Person{
nome da string estática pública;
idade interna estática pública;
endereço de string estático público;
estático{
nome = "Zhang San";
idade=20;
System.out.println("Idade de inicialização");
endereço = "Pequim";
idade=34;
}
public static void main(String[] args) {
System.out.println(nome);
System.out.println(idade);
System.out.println(endereço);
}
}
A sequência de inicialização é executada sequencialmente de acordo com a sequência de inicialização das variáveis de membro de classe correspondentes após a conversão, de modo que todas as variáveis de membro estáticas são declaradas primeiro e depois atribuídas, e a ordem de atribuição também é baseada na ordem em que as variáveis de membro estáticas são inicializado no código-fonte, Nota: Definir uma variável de membro e inicializá-la diretamente é equivalente a inicializá-la em um bloco de código estático, ambos na ordem em que são definidos no código-fonte.
variáveis locais
Variável local: Criada no corpo do método, esta variável não pode ser acessada fora do corpo do método.
Criação e uso de variáveis locais (variáveis locais devem receber um valor, variáveis de membro não podem receber um valor)
Copie o código da seguinte forma: public class Pessoa {
público estático void principal(String arges[])
{
String nome="Xiao Huang";
String Sexo="Masculino";
idade interna=20;
Altura dupla=1,70;
System.out.println("Nome:"+nome+",gênero"+Sexo+",idade:"+idade+",idade:"+Altura);
}
}
Veja o exemplo e copie o código. O código é o seguinte: public class PassTest {.
public static void main(String args[]) {
StringBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer("b");
uma(uma,b);
System.out.println(a);
System.out.println(b);
PassaTeste p = new PassTest();
computador();
}
vazio estático a(StringBuffer a, StringBuffer b) {
uma = a.append(b);
b = uma;
}
}
De acordo com o escopo de uso das variáveis locais, o resultado deveria ser ab, mas na verdade a saída é de fato ab b.
É uma questão de passar referências de parâmetros. Se for uma referência, o que é passado deve ser uma cópia da mesma referência.
b=a no método a altera a referência da cópia b para =a, mas não tem efeito em b no main.
a = a.append(b); Principalmente a.append(b); Esta frase altera o valor apontado por uma referência, porque a in main também aponta para o mesmo objeto, então a saída é ab b;
Se a = a.append(b); for alterado para a = new StringBuffer("ab");
Veja os dois programas a seguir:
Procedimento um:
Copie o código da seguinte forma: variável de classe pública
{
int eu;
teste vazio()
{
intj=8;
se(j==eu)
System.out.println("Igual");
outro
System.out.println("Diferente");
}
público estático void principal(String[] args)
{
Variável v=nova Variável();
v.teste();
}
}
Procedimento dois:
Copie o código da seguinte forma: variável de classe pública
{
teste vazio()
{
int eu;
intj=8;
se(j==eu)
System.out.println("Igual");
outro
System.out.println("Diferente");
}
público estático void principal(String[] args)
{
Variável v=nova Variável();
v.teste();
}
}
O primeiro programa é normal e compila sem erros. Quando o segundo programa for compilado, o seguinte erro será exibido:
D:Programjavatest>variável javac.java
Variable.java:9: Variável i talvez ainda não tenha sido inicializada
se(j==eu)
^
erro
A razão pela qual tal erro ocorre é porque: as variáveis de membro têm valores padrão (aquelas modificadas por final e não estáticas devem ser atribuídas explicitamente) e as variáveis locais não serão atribuídas automaticamente.
O corpo da classe é dividido em duas partes. As variáveis definidas na parte de definição de variáveis são chamadas de variáveis-membro da classe, e as variáveis definidas no corpo do método e nos parâmetros do método são chamadas de variáveis locais.
A diferença entre variáveis locais e variáveis de membro
As variáveis locais descrevem os atributos no corpo do método, enquanto as variáveis de membro descrevem os atributos no objeto.
As variáveis de membro podem ser modificadas por modificadores públicos, protegidos, padrão, privados, estáticos e finais, enquanto as variáveis locais só podem ser modificadas pelo modificador final.
As variáveis de membro são criadas no heap e as variáveis locais são criadas na pilha.
As variáveis locais possuem valores padrão do sistema. As variáveis locais não possuem valores padrão do sistema e devem ser atribuídas manualmente.
Espero que este artigo seja útil para a programação Java de todos.