美文网首页
Java基础:static方法与非static方法的区别

Java基础:static方法与非static方法的区别

作者: Nathan_Shen | 来源:发表于2017-06-05 20:52 被阅读0次

    之前学习java的时候,笔记都写在小本子上,最近整理下,慢慢放在博客中


    Static Method 与Non-Static Method的区别: 

    1.生命周期:

    静态方法与静态成员变量一样,属于类本身,在类装载的时候被装载到内存中,不自动进行销毁,会一直存在与内存中,直到JVM关闭。

    非静态方法,又叫实例化方法,属于实例对象,实例化后才会被分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM回收之后,也跟着消失。

    2.在内存中存储的位置

    静态方法和静态变量创建后始终使用同一块内存,是连续的。

    非静态方法会存在于内存的多个地方,是离散的。

    3.效率

    静态方法的使用效率比非静态方法的效率高

    4.线程安全

    静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发的就问题。

    非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

    5.使用范围

    静态方法:1.有静态属性的类,一般会定义静态方法。2.没有属性的类,一般会定义静态方法。3.如果一个方法与他所在类的实例对象无关,那么么它就应该是静态的。静态方法可以被继承但是不能被覆盖。

    ---总结:

    如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。

    如果从线程安全、性能、兼容性上来看,选用实例化方法为宜。

    相关文章

      网友评论

          本文标题:Java基础:static方法与非static方法的区别

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