美文网首页
静态方法和实例方法区别

静态方法和实例方法区别

作者: smallThree1 | 来源:发表于2018-02-11 11:53 被阅读114次

    静态方法和非静态方法的区别:

    一般来说习惯于先new一个目标对象在调用对应的方法,但在很多时候也会直接调用静态方法,这两者的用法看似差不多,很多时候仅仅图个方便直接使用静态方法调用。这里记录一下两者的区别.

    内存上分析:

    在使用静态方法的过程中,尤其是大量代码运行过程中会在较大并发过程中更容易出现OOM之类的问题,因为静态方法是在程序一开始就会加载进内存,这也是为何可以直接在程序中直接调用静态方法的原因,而实例化方法是在程序中调用的时候才会加载进内存,所以可以看到静态方法很快,但是太多会占用内存

    任何语言底层都是对内存和磁盘的操作,面向对象只是针对软件层的问题,底层都一样.静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快,而且静态内存是有限制的,太多了程序会启动不了。  

    静态方法和非静态方法对比总结:

     ①静态成员属于类所有,非静态成员属于类的实例所有。

     ②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;

      非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。

    总括:大家对这个问题都有一个共识:那就是实例化方法更多被使用和稳妥,静态方法少使用。如果从线程安全、性能、兼容性上来看也是选用实例化方法为宜。

    相关文章

      网友评论

          本文标题:静态方法和实例方法区别

          本文链接:https://www.haomeiwen.com/subject/kcuktftx.html