static
如果我们想要改变对象的地址,传统方式我需要调用对象的set方法来重新赋值,如果对象少的时候这样还可以,但是如果对象很多呢?这里我们引入static关键字
staci String region;
创建静态变量后,我们只需要通过类名调用静态变量赋值即可,无需在针对每个对象赋值,那么这是为什么呢?
如图,栈中存放一个指向对象的引用地址,堆中存放着对象,方法区中则存在着我们的静态变量。因为在方法区中,不在堆中,所以无须通过对象来赋值。方法区中的静态变量在类加载的时候就被初始化,先于对象的创建儿产生,所以只需要类名调用就可以在类的所有对象里面实现。
说到静态变量,那就一定有静态方法。
如图,有static修饰的方法就是静态方法,调用静态方法只需要类名.方法即可,如果没有static修饰的方法调用则需要对象.方法。