1、修饰范围
- 成员变量
- 方法
- 代码块
- 内部类
2、特性
被 static 修饰属于静态的。其中 静态成员变量 和 静态方法 无需实例化,即可通过类直接访问。
\qquad静态方法 的访问在我们开发中比较场景的就是一些工具类。例如 Spring 框架中的 StringUtils 工具类,里边的方法基本都是 static 修饰的。
\qquad静态方法 是所有对象共享。
User类:
public class User {
/**
* 用户姓名
*/
private String name;
/**
* 国籍
*/
static String country;
public User(String name) {
this.name = name;
}
public User(String name, String c) {
country = c; //构造函数的入参变量名不能与静态变量名一致。因为 country 属于类变量,不能使用 this 关键字访问,所以会导致赋值失败
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", country='" + country + '\'' +
'}';
}
}
测试类:
public class UserTest {
public static void main(String[] args) {
User liSi = new User("liSi", "china");
System.out.println(liSi);
User zhangSan = new User("zhangSan"); //此处没有给张三赋值国籍,但是在打印张三的时候,他的国籍是和李四一样的。
System.out.println(zhangSan);
}
}
输出结果:
static 静态代码块只会在类的加载时执行。
static 静态内部类,在一定的访问权限下可以被外部访问。
内部接口(嵌套接口)默认是 static 修饰的,接口的属性默认 public static final。