前言
在java中经常遇到使用classname.method()的方式调用方法,哪些场景需要用到呢,如下:
- 某些操作不依赖具体实例
- 某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量
- 实现某些特殊的设计模式:如Singleton
解决:static修饰方法
static修饰的方法,会使这个方法成为整个类所公有的方法。方便调用。
首先要了解,类加载过程只进行一次,类本身也是通过字节码保存在文件中,java会通过I/O流把类文件读入JVM中,JVM通过类路径(CLASSPATH)来找字节码文件,
一旦该类被加载,所有的static修饰的方法在堆内存中都有一块专门的区域来存放,从而成为整个类所公有的方法。
使用new对象的方式,每new一个类的对象,系统就会重新在堆内存中开辟一个新空间来存放该类的实例对象,并且栈中也会有一个新的引用变量去指向这个类对象。