类变量、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在内存中只有独一份。


...全文
33 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧