• 从内存层次浅谈动态内容与静态内容的区别


    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827364.html 
     
    静态内容:在内存中有一片特定的区域,不属于某特定的类对象,而是属于所有类对象,每个对象默认有指针指向这片区域,以调用静态的属性、方法
    当创建第一个类对象时,类代码由硬盘加载到内存时,静态内容加载一次,开辟区域存放,之后每次创建对象时不再加载。每个对象默认有指针指向这片区域,以调用静态的属性、方法。
    所以,静态方法的调用格式为:  类名.静态方法名 、  对象名.方法名  均可
     
     
    动态内容:每个类对象创建时,在内存中开辟一片区域给这个对象,用来存放数据以及进行运行,其中的所有都是专属该对象的,所以动态的内容调用只能通过  对象名.动态方法名、 对象名.动态属性   来调用。
     
     
     
    静态区域的内容无自动回收机制,占内存。
    一般把公用的属性、方法、工具包设置为静态的。
     
     
    分配内存语句——new
    每一个new语句,执行一次内存分配。在内存中开辟一片地,并按照new 的内容来使用这片区域。
     
    所以,在类中,动态方法调用动态方法,可以直接通过方法名调用,而不需new一个对象.方法名调用。就是因为同一个类占有一片空间,它的所有动态方法都在其中了,可以直接调用。 如果在动态方法中new一个类对象来调用动态方法的话,实质是调用那个新对象的方法了,而不是该方法所在的类对象的内存空间中封存的方法。
     
    补充一点干货:
    A a=new A()  与  A a=null 的区别:
    前者a存放的地址指向一片区域,那片区域按照A类来具体使用,存储属性数据、方法运行空间等。
    后者a存放的地址指向一片区域,但那片区域没有具体的使用规则,相当于天地初开,一片混沌。
  • 相关阅读:
    wireshark解析https协议方法
    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案
    selenium--判断元素是否存在
    lambda(匿名函数)---基于python
    python单元测试之参数化
    获取文件夹下某个类型的文件名---基于python
    python操作Excel读写--使用xlrd
    PCAP文件格式分析(做抓包软件之必备)
    pip安装Crypto注意事项
    使用PYTHON解析Wireshark的PCAP文件
  • 原文地址:https://www.cnblogs.com/ygj0930/p/5827364.html
Copyright © 2020-2023  润新知