转自:http://joe5456536.blog.163.com/blog/static/8537477320117136658629/html
http://www.cnblogs.com/devinzhang/archive/2012/04/27/2473570.html算法
我知道静态变量的使用要很当心,由于它在每一个对象中是共享的。可是对于静态方法个人认识只局限于下面:设计模式
● 生命周期(Lifecycle):安全
静态方法(Static Method)与静态成员变量同样,属于类自己,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。并发
非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须经过类的实例来引用。不会常驻内存,当实例对象被JVM 回收以后,也跟着消失。 函数
静态方法的使用效率比非静态方法的效率高。工具
按照上面的概念,只要内存够用,均可以使用静态的。使用静态方法会带来什么问题呢this
● 线程安全spa
静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。线程
非静态方法是针对肯定的一个对象的,因此不会存在线程安全的问题。
静态方法和实例方法是同样的,在类型第一次被使用时加载。调用的速度基本上没有差异。