静态方法和实例方法区别

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

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

内存上分析:

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

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,440评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,946评论 18 399
  • 我二十岁的时候,体重一百六十斤,一顿能吃两袋泡面和两个包子,食堂里油亮亮的炖豆腐,酸甜的西红柿炒鸡蛋,都是我...
    大圆圆圈阅读 819评论 0 0
  • 它亲身经历了性 同性恋 恋童癖 和毒品。站在最低的平地去追逐常人不屑的层面。 很羡慕查理的朋友们,让他打开心扉,让...
    lemonsdaily阅读 4,683评论 0 2
  • 确实考验耐心和耐力的一次作业……郁金香花朵的线稿画得不好,最左边的叶片也画错了,上色的手感找到了一点点,还是要勤学...
    lucyli521阅读 3,034评论 2 4