static成员变量是属于类的(只在内存中存储一份),没有static修饰的成员变量是属于对象的(叫实例成员变量)
    image.png
    image.png

    1. package com.itheima.d1_static;
    2. public class User {
    3. /**
    4. * 在线人数.
    5. * 注意:static修饰的成员变量:静态成员变量,只在内存中有一份,可以被共享
    6. */
    7. // 这里的成员变量有static修饰,属于类
    8. // 无static修饰属于对象
    9. public static int onlineNumber = 161; // 这是定义一个静态的成员变量
    10. /**
    11. * 实例成员变量:无static修饰,属于每个对象的,必须用对象名.访问
    12. */
    13. // private修饰的成员变量只能再本类访问
    14. private String name;
    15. private int age;
    16. public static void main(String[] args) {
    17. // 目标:理解static修饰成员变量的作用和访问特点
    18. // 1. 类名.静态成员变量 (推荐用类访问static修饰的成员)
    19. System.out.println(User.onlineNumber);
    20. System.out.println(onlineNumber); // 同一个类中访问静态成员变量可以直接访问(类名可以不写)
    21. //2.对象名.实例成员变量
    22. // System.out.println(User.name); 报错,因为他没有static修饰,属于对象的,不能用类访问
    23. User u = new User();
    24. System.out.println(u.name = "张三");
    25. System.out.println(u.age = 21);
    26. // 也可以用对象访问static修饰的成员(官方不推荐)
    27. u.onlineNumber++; // 新来了一个人(访问到的成员变量加1)
    28. System.out.println(u.onlineNumber);
    29. }
    30. }
    1. package com.itheima.d1_static;
    2. public class StaticFieldDemo1 {
    3. public static void main(String[] args) {
    4. // 目标:理解static修饰成员变量的作用和访问特点
    5. // 1. 类名.静态成员变量 (推荐用类访问static修饰的成员)
    6. System.out.println(User.onlineNumber);
    7. // User是自己定义的类,由于加了static关键字,可以直接共享给其他类使用过