static修饰变量
- static变量也称作静态变量,也叫做类变量
- 静态变量被所有的对象所共享,在内存中只有一个副本
- 当且仅当在类初次加载时会被初始化
- 意味着静态变量最先被初始化
- 静态变量属于类
- 通过类名就可以调用静态变量
也可以通过
**对象名.静态变量名**调用-
static变量
public class Student{private String name;private static String schoolName;private static int count;public Student(String name){this.name=name;count++;}public void showStuInfo(){System.out.println("学生的姓名是:"+this.name+",学校的名字是:"+Student.schoolName);}public static void main(String[] args){Student.schoolName="第五十七中"; //类名.静态变量调用静态变量Student s1=new Student("小张");Student s2=new Student("小王");Student s3=new Student("小美");s1.showStuInfo();s2.showStuInfo();s3.showStuInfo();System.out.println("学生的数量是:"+Student.count);}}
-
| 学生类 | 学生对象 | 学生对象 |
|---|---|---|
| 姓名 | 姓名:小红 | 姓名:小张 |
| 年龄 | 年龄:18 | 年龄:19 |
| 学号 | 学号:001 | 学号:002 |
| 上课教室 | 上课教室:301教室 | 上课教室:301教室 |
public class Student{private String name;private int age;private int studentId;private static String classRoom;}
static变量和private变量的定义
学生类定义的时候,教室是static变量,因为是学生对象共享的
姓名,年龄和id是学生自己的,所以是private变量
实例变量和静态变量区别
- 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量
实例变量属于该类的对象,必须产生该类对象,才能调用实例变量
静态变量随着类的加载存在于方法区中
实例变量随着对象的建立存在于堆内存中
静态变量在程序开始时创建,在程序结束时销毁
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁
