静态用关键字static,它属于类,而不属于对象
静态变量(Static Variables)和静态方法(Static Methods)是与类本身有关系的而不是与类的实例对象有关系的东西。
下面来解释上面这句话的意思
静态变量:
静态变量是在类级别上定义的变量,静态变量通常用关键字 static 来声明,并在类的任何方法之外进行初始化,这意味着它们在类加载时就会被初始化,并且只会初始化一次。这与实例变量不同,实例变量需要在对象实例化时才会进行初始化。静态变量被所有类的实例对象所共享。无论new多少个类的实例对象,静态变量的值在所有实例之间保持一致。也就是说你无论创建多少个对象,当你访问静态变量的时候他的值是一样的,这点很好理解,因为你是在类加载的时候,静态变量就已经初始化了所以和new出来的对象无关。
静态变量的主要用途包括
全局常量:在整个程序中共享的常量值,例如数学常数 π。
计数器或标记:用于跟踪类的实例对象的数量或状态。
缓存数据:存储一些频繁使用的数据,以避免重复计算或数据库访问。
静态方法:
静态方法是与类相关的方法方法,通常,静态方法用关键字 static 来声明,它们不依赖于类的实例对象,和这个类new出来的对象没有半毛钱关系,可以直接通过类名调用。静态方法不能直接访问非静态的成员变量和方法,因为非静态的成员变量和方法,是和这个类的对象有关的,比如通过get和set方法来进行操作,然而静态方法没有对实例对象的引用。
静态属性的使用
public class MyStatic {
public static Double t = 7D;
public Integer t2 = 1;
public Object getSum() {
double aa = t + t2;
return aa;
}
public static void main(String[] args) {
MyStatic.t = 2D;
MyStatic myStatic = new MyStatic();
Object sum = myStatic.getSum();
System.out.println(sum);
}
可以在外面通过类名+属性对静态属性进行修改,如MyStatic.t = 2D 他不属于对象,而属于类
静态方法
静态方法不能直接访问非静态的成员变量和方法
public static Double t = 7D;
public static Double t3 = 2D;
public Integer t2 = 1;
public static Object getJian() {
return t - t3;
}
public static void main(String[] args) {
MyStatic.t3= 4D;
Object jian = MyStatic.getJian();
System.out.println(jian);
}