34.static静态小总结,static内存分析,static 代码加载原理性分析

static静态小总结

<1>静态成员变量与方法推荐通过类名直接调用不推荐使用类对象进行操作;【没有对象】
<2>静态成员变量无论通过哪一种方式修改都会影响到所有的使用着;【共享资源】
<3>静态成员变量是在类对象创建之前可以使用,类对象销毁之后也可以使用,【生命周期完全不同】
<4>所以静态成员变量和类对象无关

static内存分析

<1> 类对象 -> 【堆区】
<2> 静态成员变量 -> 【数据区】
<3>类对象和静态成员变量占用的内存空间不属于同一个区域,如果没有以用指向操作,不存在任何关系
<4> 内存角度分析【没有关系】

static 代码加载原理性分析

<1> .java文件会通过java编译器(javac.exe)编译生成对应的.class文件(.class文件是二进制的文件),
<2>在程序加载过程中.class字节码文件会加载到内存的【方法区】,同时会按照基本的顺序结构【从上至下,从左到右】完成.class字节码文件的加载过程;
<3>在加载过程中static修饰的内容会准备就绪,可以执行,可以使用;
<4>也就是说在以上流程中static与类对象是没有任何关系的;

【资源销毁过程】

<5>java存在的类对象,是通过JVM中的垃圾回收机制销毁对象,回收内存,
<6>静态成员变量是在整个程序退出之后,当前代码中不存在任何一块内存被类对象占用,JVM才会释放。
<7>.class文件占用的【方法区】空间,与之同时,销毁静态成员变量占用的【数据区】空间;
<8>静态成员变量的生存周期是远远大于类对象的

public class Test {
    public static void member(){
    }
    public void memberInfo(){
        Test test = new Test();
        //通过类对象调用静态方法会有警告【不建议】
        test.member(); 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值