简介
java内存分为:
1.栈内存:存放一些基本类型的变量、数组和对象的引用;
2.堆内存:存放一些对象;
static:可用于修饰成员变量、成员方法、静态块、静态导包;
被static修饰的变量和方法独立于该类的,不依赖于某个实例而是被该类的所有实例共享;
所有实例的引用都指向同一个地方,任何一个实例对其的修改都会导致其他实例的变化;
修饰成员变量
概念:被static修饰的变量称为静态变量(类成员、静态成员),可通过类名访问;
使用场景:对象之间共享数据、访问方便;
静态变量:在类加载时完成初始化,在内存中仅有一个,且JVM也只会为它分配一次内存;
实例变量:伴随着实例,每创建一个实例就会产生一个实例变量,它与该实例同生共死;
内存中结构修饰成员方法
概念:被static修饰的方法称为静态方法,可通过类名调用;
同样是在类加载时就存在,相比于修饰成员变量,存储方面没多大变化,方法本来就是存储在类的定义中;
静态块
概念:被static修饰的代码块称为静态代码块,随着类的加载一块执行,可以放在任意位置;
注意:静态代码块中只能调用静态变量或静态方法且不能引用this,super(因为此时还没有实例对象)
静态导包
举例
总结
1.用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
2.用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
3.静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
4.静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便;
网友评论