static 变量java
static 是java中的一个关键字,单词本身是静态的含义。一个类的成员包含变量、方法、构造方法
、代码块和内部类,static可以修饰除了构造方法以外的所有成员使用static修饰的成员称为静态成员,是属于某个类的;而不使用static修饰的成员称为实例成员,是
属于类的每个对象的。在类中,用static声明的成员变量称为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整
个应用程序执行期间都有效。它有如下特点:
1、为该类的公共变量,属于类,被该类的所有实例分享,在类被载入时被显式初始化。
2、对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享。
3、一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名访问静态成员)。
4、在static方法中不可直接访问非static的成员。
/*** static变量初体验*/
public class Student {//定义静态变量classRoomprivate static String classRoom;public static void main(String[] args) {System.out.println(Student.classRoom);//初始值为空Student.classRoom = "503";System.out.println(Student.classRoom);Student stu = new Student();//可以通过对象引用访问静态变量classRoomstu.classRoom = "507";//static变量只有一份System.out.println(Student.classRoom);}
}
执行代码如下:
总结:static变量和非static变量的区别1、份数不同:静态变量:1份
非静态变量:1个对象1份。2、存储位置不同:静态变量:方法区
非静态变量:堆3、内存分配空间的时间不同:静态变量:第一次加载类的时候
非静态变量:创建对象的时候4、生命周期不同:静态变量和类的生命周期相同
非静态变量的生命周期和所属对象生命周期相同5、调用方式不同静态变量:通过类名调用、也可以通过对象名来调用(但不推荐)
非静态变量:通过对象名调用