一、定义
- 方法:通俗点讲,表示一种行为的描述,一个问题的解决过程
- 实例方法:没有使用static修饰,定义在类内部的方法
- 静态方法:使用static修饰,定义在类内部的方法
二、区别
- 不同点:
1)关键字不同:有无static
2)使用方式不同:静态方法可以直接使用,Class.method,也可以实例化后再调用,实例方法必须要实例化才能调用
3)变量使用不同:静态方法不能直接使用成员变量,可以直接使用静态变量,实例方法可以使用静态变量和成员变量
三、小结
静态方法属于类层面,实例方法属于实例层面,类层面大于实例层面,实例方法可以获取类层面的变量,因为在类加载的时候,变量已经加载到内存
四、使用场景
- 与类关系:静态方法一般和类没有直接关系,比如,工具类使用静态方法,实例方法一般和类有直接关系。万物存在即合理,两者之间的关系都是相对的,要联系两者,总有理由将它们扯在一起,既然静态方法还是写在一个类中,那它和类其实还是有关系的,如果放开这个理由,简单的单例模式,难道静态方法和类就没有关系了吗?只是实例方法和类直接的关系更加紧密而已
- 效率:实例方法需要实例化对象,才能调用方法,静态方法可以直接调用,少了实例化对象所需时间,效率更高些
- 线程安全:静态方法内部使用的静态变量无法保证线程安全,这个静态变量是一个线程共享,实例方法使用的成员变量属于当前对象,不将该对象共享出去,是一个线程安全的(哈哈)