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