如果想要理解静态方法为什么不用实例化就要了解jvm的底层知识.
1.jvm的实现是基于栈结构的.
2.类在加载时把类信息加载到java的内存中的方法区(这是共享的,有唯一性),new对象时,会在堆区里生成新的类实例,每new一个就生成一个新的实例(这是私有的)
3.普通类的方法都是在执行到方法时才会在内存中开一个新的空间,在这个空间里创建新的栈再根据椎中的实例来储存方法体内的局部变量和执行方法操作.在方法结束返回时,丢弃这个栈空间.它是不能共享的,一用完就没了.再需要的话就再生成再运行再丢弃
4.静态方法是在加载类时就已经被加载方法区里,它是可以共享的,每次要用它只要调用即可,不同在栈区里去生成.
网友评论