总结
✅1. static修饰属性
- 在类加载的时候就一起加载入方法区中的静态域中
- 先于对象存在
- 访问方式:对象名.属性名 类名.属性名(推荐)
✅2. static修饰方法
- 在静态方法中不能访问非静态的方法
- 在静态方法中不能访问非静态的属性
- 在静态方法中不能使用this关键字(因为static优先于对象存在,而this指向当前对象)
static修饰属性示例:
package com.code.luo.test01;
public class Person {
int id ;
static int sid ;
public static void main(String[] args) {
Person p = new Person();
p.id = 10;
p.sid = 10;
Person p2 = new Person();
p2.id = 20;
p2.sid = 20;
Person p3 = new Person();
p3.id = 30;
p3.sid = 30;
System.out.println(p.id); // 10
System.out.println(p2.id); // 20
System.out.println(p3.id); // 30
System.out.println("---------------------");
System.out.println(p.sid); // 30
System.out.println(p2.sid); // 30
System.out.println(p3.sid); // 30
}
}
static修饰属性的应用场景:某些特定的数据想要共享
static修饰方法示例:
package com.code.luo.test01;
public class Body {
int id ;
static int sid ;
public void a () {
System.out.println(id);
System.out.println(sid);
b(); // 正确
}
static public void b() {
System.out.println(id); // 报错 在静态方法中不能访问非静态的属性 static修饰的方法先于对象存在
System.out.println(sid);
a() //错误 a方法可能还没有定义
}
}