static关键字的使用:
- 修饰成员变量:即为静态变量(类变量),所有的对象共享这个变量,可以用类名.属性调用之。
- 修饰成员方法:即为静态方法(类方法),所有的对象共享这个方法,可以用类名.方法调用之。
- 修饰代码块:即为静态代码块,本类被加载的时候会执行,并且只会执行一次。
- 修饰类:只能修饰内部类,即为静态内部类
- 修饰类的导入:类的静态导入,把目标类中的静态变量和静态方法导入为本类中的静态变量和静态方法。
注意:
- 普通方法可以直接使用静态方法、静态变量
- 静态方法不可以直接使用普通方法、普通变量
- 静态方法可以直接使用静态方法、静态变量
我们用一个女朋友类来简单说明这一点:
/**
* 女朋友类
* @author junki
* @date 2019年11月23日
*/
public class Girlfriend {
static String name;
private int age;
private char sex;
// 使用本类创建对象的使用执行一次,每次都会执行。
{
System.out.println("我是一个普通的代码块");
}
// 本类被加载的时候会执行,并且只会执行一次。
static {
System.out.println("我是一个静态的代码块");
}
public Girlfriend() {}
public Girlfriend(String name, int age, char sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Girlfriend [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
public static void eat() {
System.out.println("吃");
}
}
public static void main(String[] args) {
Girlfriend gf1 = new Girlfriend("阿文", 18, '男');
Girlfriend.name = "阿文";
gf1.name = "汪江佩";
System.out.println(gf1.toString());
gf1.eat();
Girlfriend.eat();
}
// 静态内部类
static class Boyfriend {
public String name;
public int age;
}
拓展知识:自定义工具类jar包的导出:
- 用static关键词自定义工具类,可以直接使用,可以用final修饰类名,防止被继承
- 右键项目-> Export -> JAR file -> 选择地址-> 点击finish