类变量、final、静态代码块搭配写单例,区别
贤者的守护 2019-07-05 12:16:34
package com.question.single;
public class Q {
public static void main(String[] args) {
System.out.println(Util.getU().hashCode());
System.out.println(Util.getU().hashCode());
System.out.println("-------------------");
System.out.println(Util2.getU2().hashCode());
System.out.println(Util2.getU2().hashCode());
}
}
class Util {
private static final Util u = new Util();
private Util() {
}
public static Util getU() {
return u;
}
}
class Util2 {
private static final Util2 u2;
private Util2() {
}
static {
u2 = new Util2();
}
public static Util2 getU2() {
return u2;
}
}
问题1:这两种写法有什么区别?
问题2:是否u,u2在内存中只有独一份。