Java类的属性
Java属性又称之为成员变量,用于储存数据,成员变量又分为了静态成员变量和实例成员变量。
一、静态成员变量
静态成员变量又称类变量由static修饰,静态变量存储在方法区中;类加载时进行变量初始化,变量随类销毁而销毁,静态变量的作用域与类的生存范围相同。
静态变量特点
- 由static修饰。
- 储存于方法区中。
- 随类加载初始化,分配内存空间,
- 随着类的销毁而销毁。
- 作用域与类的生存范围相同。
- 可以通过类名和实例名调用。
- 所有对象共享静态变量(即实例对象A改变了静态变量a,那么对象B访问的静态变量a同样被改变)。
示例
public class test {
static String name = "充气皮皮虾"; //静态变量
public static void main(String[] args) {
test t = new test();//实例化
//通过实例调用
System.out.println(t.name); // "充气皮皮虾"
//通过类名调用
System.out.println(test.name); // "充气皮皮虾"
}
}
二、实例成员变量
实例变量没用static修饰,类的实例被创建时初始化,随实例销毁而销毁,实例变量的作用域与对应实例的生存范围相同;
实例变量特点
- 没有被static修饰。
- 储存于堆中。
- 随实例加载初始化,分配内存空间,
- 随着实例的销毁而销毁。
- 作用域与实例的生存范围相同。
- 只能通过实例名调用。
- 实例变量只属于当前对象(即实例对象A改变了静态变量a,那么对象B访问的静态变量a不会被改变)。
示例
public class test {
String name = "充气皮皮虾"; //实例变量
public static void main(String[] args) {
test t = new test();//实例化
//通过实例调用
System.out.println(t.name); // "充气皮皮虾"
//通过类名调用
System.out.println(test.name); // 报错 无法从静态上下文中引用非静态 变量 name
}
}