静态方法和实例方法区别

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

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

内存上分析:

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

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

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

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

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

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

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

你可能感兴趣的:(静态方法和实例方法区别)