static修饰变量

  • static变量也称作静态变量,也叫做类变量


  • 静态变量被所有的对象所共享,在内存中只有一个副本
  • 当且仅当在类初次加载时会被初始化
    • 意味着静态变量最先被初始化
  • 静态变量属于类
  • 通过类名就可以调用静态变量
  • 也可以通过**对象名.静态变量名**调用

    • 建议通过**类名.静态变量名**调用

      static变量

      1. public class Student
      2. {
      3. private String name;
      4. private static String schoolName;
      5. private static int count;
      6. public Student(String name)
      7. {
      8. this.name=name;
      9. count++;
      10. }
      11. public void showStuInfo()
      12. {
      13. System.out.println("学生的姓名是:"+this.name+",学校的名字是:"+Student.schoolName);
      14. }
      15. public static void main(String[] args)
      16. {
      17. Student.schoolName="第五十七中"; //类名.静态变量调用静态变量
      18. Student s1=new Student("小张");
      19. Student s2=new Student("小王");
      20. Student s3=new Student("小美");
      21. s1.showStuInfo();
      22. s2.showStuInfo();
      23. s3.showStuInfo();
      24. System.out.println("学生的数量是:"+Student.count);
      25. }
      26. }

学生类 学生对象 学生对象
姓名 姓名:小红 姓名:小张
年龄 年龄:18 年龄:19
学号 学号:001 学号:002
上课教室 上课教室:301教室 上课教室:301教室
  1. public class Student
  2. {
  3. private String name;
  4. private int age;
  5. private int studentId;
  6. private static String classRoom;
  7. }

static变量和private变量的定义

学生类定义的时候,教室是static变量,因为是学生对象共享的
姓名,年龄和id是学生自己的,所以是private变量

实例变量和静态变量区别

  • 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量
  • 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量

  • 静态变量随着类的加载存在于方法区中

  • 实例变量随着对象的建立存在于堆内存中

  • 静态变量在程序开始时创建,在程序结束时销毁

  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁