静态变量(Static Variables)和静态方法(Static Methods)是与类本身有关系的而不是与类的实例对象有关系的东西。
下面来解释上面这句话的意思
静态变量:
静态变量是在类级别上定义的变量,静态变量通常用关键字 static 来声明,并在类的任何方法之外进行初始化,这意味着它们在类加载时就会被初始化,并且只会初始化一次。这与实例变量不同,实例变量需要在对象实例化时才会进行初始化。静态变量被所有类的实例对象所共享。无论new多少个类的实例对象,静态变量的值在所有实例之间保持一致。也就是说你无论创建多少个对象,当你访问静态变量的时候他的值是一样的,这点很好理解,因为你是在类加载的时候,静态变量就已经初始化了所以和new出来的对象无关。
静态变量的主要用途包括
全局常量:在整个程序中共享的常量值,例如数学常数 π。
计数器或标记:用于跟踪类的实例对象的数量或状态。
缓存数据:存储一些频繁使用的数据,以避免重复计算或数据库访问。
静态方法:
静态方法是与类相关的方法方法,通常,静态方法用关键字 static 来声明,它们不依赖于类的实例对象,和这个类new出来的对象没有半毛钱关系,可以直接通过类名调用。静态方法不能直接访问非静态的成员变量和方法,因为非静态的成员变量和方法,是和这个类的对象有关的,比如通过get和set方法来进行操作,然而静态方法没有对实例对象的引用。
静态方法的主要用途包括:
实用函数:提供一些通用的工具方法,不需要依赖于类的实例状态。
工厂方法:用于创建类的实例对象,而不需要显式地使用构造函数。
辅助方法:在类中执行一些特定的操作,不依赖于实例对象。
public class Person {
private String name;
static int age = 10;
private static String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static int getAge() {
return age;
}
public static void setAge(int age) {
Person.age = age;
}
public static String getColor() {
return color;
}
public static void setColor(String color) {
Person.color = color;
}
public Person(String name) {
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
//不是私有的可以直接访问
System.out.println(Person.age);
System.out.println("________________");
Person.age = 12;
Person.setAge(16);
System.out.println(Person.age);
System.out.println("________________");
//私有的通过静态的get set方法访问
Person.setColor("red");
System.out.println("________________");
System.out.println(Person.getColor());
//通过对象来访问
Person person = new Person("John");
person.getName();
System.out.println("________________");
System.out.println(person.getName());
}
}
运行结果
做无法估算推断的事。保持热切。保持诚挚。颠覆安逸。涉身险境。做好被撕成碎片的准备。最后你会发现真的会死的很惨。