1. Clasificación de variables en Java
Las variables en Java se pueden dividir en variables locales y variables miembro de acuerdo con diferentes posiciones de declaración . Si una variable miembro se modifica con la palabra clave estática, también se llama variable miembro estática , y si no hay modificación estática, también se llama una variable miembro de instancia . A continuación se describen las conexiones y diferencias entre los tres.
public class Variable {
//静态成员变量(静态变量)
static int x=10;
//实例成员变量(成员变量)
int y=20;
public static void main(String[] args) {
//局部变量
int num=30;
}
}
2. La diferencia entre variables locales, variables miembro y variables estáticas
variable | Declarar ubicación | Ubicación de la memoria | Ciclo vital | inicialización |
---|---|---|---|---|
Variable local | En el método o en la declaración del método (parámetros) | Apilar | Creado como se llama al método, desaparece cuando el método desaparece | Se debe asignar la inicialización |
Instancia variable | Método externo en clase | montón | Creado a medida que se crean los objetos, desaparecen a medida que los objetos desaparecen | Tiene un valor de inicialización predeterminado |
Variable estática | Método externo en clase | Área estática | Carga a medida que se carga la clase y desaparece cuando la clase desaparece | Tiene inicialización predeterminada |
¿Cuándo usar variables estáticas?
Cuando un cierto "valor de atributo" de todos los objetos de una clase no cambia con el cambio del objeto, para ahorrar memoria de pila, podemos definir el atributo como un atributo de nivel de clase, es decir, declararlo como estático. variable, y aumentar a datos de "Toda la familia", se puede acceder a dichas variables directamente utilizando "nombre de clase" sin crear objetos.
Variables de miembro | Diferencia de superficie | escenas que se utilizarán | Método de llamada | Ubicación de la memoria |
---|---|---|---|---|
Instancia variable | Sin modificación estática | Porque cada objeto de la clase esAtributos únicos | Solo se puede llamar por el nombre del objeto | Área de montón |
Variable estática | Modificado por estática | Para cada objeto de la claseAtributos consistentes | Puede usar el nombre de la clase para llamar, también puede usar el nombre del objeto para llamar (no recomendado) | Área estática |
Por ejemplo:
public class ManTest {
public static void main(String[] args) {
Man man=new Man("小明");
//实例变量使用对象名调用
System.out.println("名字"+man.name);
//静态变量可使用类名调用(推荐)
System.out.println("性别"+Man.sex);
//静态变量也可以通过对象名调用(不推荐)
System.out.println("性别"+man.sex);
}
}
class Man{
//实例变量
String name;
//静态变量
static char sex='男';
Man(){
}
Man(String name) {
this.name = name;
}
}
Algunas notas
- El principio de proximidad
cuando los miembros de las mismas variables locales y nombres de variables, utilizan en el método, utilizando el principio de proximidad. - Alcance
Los nombres de las variables en el mismo dominio no pueden tener el mismo nombre. Diferentes nombres de variables de dominio pueden ser iguales. Java sigue el principio de proximidad y accederá automáticamente a los datos más cercanos.
Con respecto al rango válido de variables, recordemos una oración: no la reconocerás después de las llaves .