1.类变量与类方法简介
static 修饰符,用来修饰类方法和类变量
静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量
静态变量使用得比较少,但静态常量却使用得比较多😊
静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据
对类变量和方法的访问可以直接使用 classname.variablename 和 classname.methodname 的方式访问🎂
public static final double PI = 3.1415926;
2.类变量内存布局
静态变量被所有对象的实例共享,所有的对象实例共同指向内存中的一个空间,所以静态变量的变化对于所有的对象实例是共通的
这个共同的空间存储位置要看你的JDK版本,JDK8之前,该空间位于方法区,JDK8之后,该空间位于堆中
另外,这个空间在类加载的时候生成!所以即使没有创建对象实例也能访问!😁
类变量的声明周期是随着类的加载开始,随类的消亡而消亡🃏
3.类方法
静态方法是一种不能向对象实施操作的方法
可以认为静态方法是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)
在下面两种情况下使用静态方法:
一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如:Math.pow)
一个方法只需要访问类的静态域
在一些工具类,经常使用的类中易使用静态方法(其他类调用方便,不需要创建实例)
public static final double PI = 1.1314926; public static void showPI() { System.out.println(PI); }