Este artículo analiza la diferencia entre variables miembro y variables locales en Java con ejemplos. Compártelo con todos para tu referencia. El análisis específico es el siguiente:
Variables miembro: las variables privadas definidas en esta clase pertenecen a esta clase.
Cree y utilice variables miembro para copiar el código. El código es el siguiente: public class Person {.
Nombre de cadena;
Sexo con cuerdas;
edad interna;
doble altura;
principal vacío estático público (String arges [])
{
Persona p=nueva Persona();
p.name="Xiao Huang";
p.Sexo="Hombre";
edad de página=20;
p.Altura=1,7;
System.out.println("Nombre:"+p.name+",Género"+p.Sexo+",Edad:"+p.age+",Edad:"+p.Altura);
}
}
Proceso de inicialización de variables miembro
1. Inicialización de clase
Para la inicialización de clases: la inicialización de clases generalmente solo se inicializa una vez, y la inicialización de clases principalmente inicializa variables miembro estáticas.
La compilación de una clase determina el proceso de inicialización de la clase.
El archivo de clase generado por el compilador realiza principalmente los siguientes cambios en las clases definidas en el archivo fuente:
1) Primero declare las variables miembro dentro de la clase en el orden en que se definen las variables miembro estáticas.
2) Inicializar de acuerdo con la secuencia de inicialización de las variables miembro en la clase Java original.
La conversión correspondiente entre una clase java y la clase compilada es la siguiente:
Archivo fuente:
Copie el código de la siguiente manera: public class Persona{
nombre de cadena estática pública = "Zhang San";
edad estática pública;
estático{
edad=20;
System.out.println("Edad de inicialización");
}
dirección de cadena estática pública;
estático{
dirección="Pekín";
edad=34;
}
público estático vacío principal (String [] argumentos) {
System.out.println(nombre);
System.out.println(edad);
System.out.println(dirección);
}
}
Cuando el código fuente de Java se convierte en un archivo de clase, se convierte en un código similar al siguiente:
Copie el código de la siguiente manera: public class Persona{
nombre de cadena estática pública;
edad estática pública;
dirección de cadena estática pública;
estático{
nombre="Zhang San";
edad=20;
System.out.println("Edad de inicialización");
dirección="Pekín";
edad=34;
}
público estático vacío principal (String [] argumentos) {
System.out.println(nombre);
System.out.println(edad);
System.out.println(dirección);
}
}
La secuencia de inicialización se ejecuta secuencialmente de acuerdo con la secuencia de inicialización de las variables miembro de clase correspondientes después de la conversión, por lo que todas las variables miembro estáticas se declaran primero y luego se asignan, y el orden de asignación también se basa en el orden en que se ordenan las variables miembro estáticas. inicializado en el código fuente, Nota: Definir una variable miembro e inicializarla directamente es equivalente a inicializarla en un bloque de código estático, ambos en el orden en que se definen en el código fuente.
variables locales
Variable local: creada en el cuerpo del método, no se puede acceder a esta variable fuera del cuerpo del método.
Creación y uso de variables locales (a las variables locales se les debe asignar un valor, a las variables miembro no se les puede asignar un valor)
Copie el código de la siguiente manera: public class Persona {
principal vacío estático público (String arges [])
{
Nombre de cadena = "Xiao Huang";
Cadena Sexo="Masculino";
edad int=20;
doble Altura=1,70;
System.out.println("Nombre:"+nombre+",género"+Sexo+",edad:"+edad+",edad:"+Altura);
}
}
Vea el ejemplo y copie el código. El código es el siguiente: public class PassTest {.
público estático vacío principal (String args []) {
StringBuffer a = nuevo StringBuffer("a");
StringBuffer b = nuevo StringBuffer("b");
a(a,b);
System.out.println(a);
System.out.println(b);
PasaPrueba p = nueva PasaPrueba();
ordenador personal();
}
vacío estático a (StringBuffer a, StringBuffer b) {
a = a.append(b);
segundo = a;
}
}
Según el alcance de uso de las variables locales, el resultado debería ser ab, pero en realidad el resultado es ab b.
Es cuestión de pasar referencias de parámetros. Si es una referencia, lo que se pasa debe ser una copia de la misma referencia.
b=a en el método a cambia la referencia de copia b a =a, pero no tiene ningún efecto en b en main.
a = a.append(b); Principalmente a.append(b); Esta oración cambia el valor señalado por una referencia, porque a en main también apunta al mismo objeto, por lo que la salida es ab b
Si a = a.append(b); se cambia a a = new StringBuffer("ab");
Mire los siguientes dos programas:
Procedimiento uno:
Copie el código de la siguiente manera: clase pública Variable
{
ent yo;
prueba nula()
{
intj=8;
si(j==i)
System.out.println("Igual");
demás
System.out.println("No es igual");
}
principal vacío estático público (String [] argumentos)
{
Variable v=nueva Variable();
v.prueba();
}
}
Procedimiento dos:
Copie el código de la siguiente manera: clase pública Variable
{
prueba nula()
{
ent yo;
intj=8;
si(j==i)
System.out.println("Igual");
demás
System.out.println("No es igual");
}
principal vacío estático público (String [] argumentos)
{
Variable v=nueva Variable();
v.prueba();
}
}
El primer programa es normal y se compila sin errores. Cuando se compila el segundo programa, se mostrará el siguiente error:
D: Programajavatest>javac Variable.java
Variable.java:9: Es posible que la variable i aún no se haya inicializado
si(j==i)
^
error
La razón por la que ocurre tal error es porque: las variables miembro tienen valores predeterminados (las modificadas por final y no estáticas deben asignarse explícitamente) y las variables locales no se asignarán automáticamente.
El cuerpo de la clase se divide en dos partes. Las variables definidas en la parte de definición de variables se denominan variables miembro de la clase, y las variables definidas en el cuerpo del método y los parámetros del método se denominan variables locales.
La diferencia entre variables locales y variables miembro.
Las variables locales describen los atributos en el cuerpo del método, mientras que las variables miembro describen los atributos en el objeto.
Las variables miembro pueden modificarse mediante modificadores públicos, protegidos, predeterminados, privados, estáticos y finales, mientras que las variables locales solo pueden modificarse mediante el modificador final.
Las variables miembro se crean en el montón y las variables locales se crean en la pila.
Las variables locales tienen valores predeterminados del sistema. Las variables locales no tienen valores predeterminados del sistema y deben asignarse manualmente.
Espero que este artículo sea útil para la programación Java de todos.