静态方法与非静态方法的效率与区别(开涛大哥来接题)

开涛大哥,现在写代码看到以前的项目中有人写dao层全部都是静态方法,这样不需要实例化就可以直接调用。但是现在的ssh框架都是通过spring实例化dao层的对象来设置实例到service层中,这些实例调用的都是非静态的方法。我表示不懂静态方法和非静态方法到底有啥区别,哪种方式更好一些,或者效率更高一些?

1、静态方法一般在工具类中居多,如jdk 的 Arrays、Collections,做工具类使用静态方法还是蛮适合的;这些方法是上下文无关的,需要的数据都是从参数传过来的;
你们公司的dao层类说明是工具类,可以这么干。

2、非静态方法:如User有getName方法 这个方法在获取name时需要一个上下文,这个上下文就是当前对象,因此是上下文相关的,所以适合非静态方法。

Class User {
private String name;

public String getName() {
    return this.name;//this就是当前对象,jvm在调用这个方法时自动把当前对象赋值给this这个引用,因此是一种上下文相关的,不同的对象调用这个方法返回的值可能不同
}

}