java中static是一个很有用的方法。
首先我们来看一个例子:
首先我们来分析Test这个类,这个类中,有一个私有的构造函数,并且有一个static 的方法,在Rua这个类中,到底会有什么样的打印结果?
这个是得到的结果:
为了更好的说明这一点,继续看下面的两个类:
打印出的内容为:
这说明两次所得到的实例是相同的。即单例模式。
所以,在这里不难看出,在static方法内,只运行了一次,并且形成了三个单例,每个单例之间都相互不影响,在Test类中,分别构造了三个不同的实例,这三个实例间相互不会影响。
这里还有一个问题,注意看注释1,这里没有使用共有构造函数,而是使用了私有构造函数,那么如果在这里使用了共有构造函数会有什么影响呢?首先,使用自由构造函数,这个类不可以初始化,即不可以被new出来,如果没有显示的声明构造函数,那么系统会为默认的使用该类的共有构造函数,因此在这里,既然需要使用到单例,那么在这不可避免的就需要使用到私有构造函数,因为,如果使用了共有构造函数,那么可能造成的影响:该类可以被new出来,这样的话,就不能被保证该实例会被这样而使用。
这里还有一点可能会发生疑问的就是,如果构造函数和static同时存在的时候,系统到底先执行哪一个呢?
系统首先会运行static内部的内容。
这里能够引出的问题:大多数人应该看过hibernate的源码,在这里贴一段过来
在这里,我们便可以看出点hibernate对于数据库连接的眉目了,
在接下来的文章中我会就hibernate对数据库的连接,性能方面写出一点我自己的看法。