最近翻看了一些资料,发现JAVA的单例模式并不简单:PHP并没有线程安全的问题,一个请求在结束后生命周期就结束了,PHP设计单例模式仅仅是为了如果在同一个页面多次处理,可以不用重复创建对象而已;JAVA则不同,需要考虑两个线程同时访问的情况。下面和上海java培训的小编一起去看看Java中单例模式和静态方法类的区别有哪些。

(1)代码结构上

单例模式可以有非静态方法和成员的,而且只要获得了实例就可以去调用;

静态方法类通常来说全是静态方法,如果有非静态方法,是不能直接调用的。

(2)编程思想上

单例模式是普通的类,只不过它是有一个实例而已,符合JAVA面向对象的思想;

静态方法类通常又称为工具类,它更像是面向过程的一个函数集。

(3)JAVA特性上

单例模式符合所有面向对象的特性,可以去继承类、可以实现接口、可以被继承、方法可以被重写、可以用于多态(不同实现);

而静态方法类不能。

(4)生命周期上

单例模式可以延迟初始化,并且一直到运行结束才会被回收;

静态方法类在第一次使用时就会被加载,执行完静态方法后就会被回收,如果频繁调用会导致频繁地初始化和释放。

(5)实例化上

单例模式需要进行实例化(通过静态方法中的new);

静态方法类不需要实例化,可以直接调用。

(6)内存占用上

单例模式调用哪个方法,就载入哪个方法,但是它需要长时间地维护一个对象;

静态方法类需要把所有静态方法都载入内存,不管你用不用。

(7)运行速度上

《单例模式和静态类的区别》作者称从日志打印看,静态方法比实例方法更快。

《java中的单例模式与静态类》作者称静态方法比实例方法更快,因为静态的绑定是在编译期就进行的。

(8)线程与共享

单例模式的多线程控制很方便,适合维护或者共享一些配置状态信息;

静态方法类的多线程控制则非常糟糕。

java 的方法是静态的类_Java中单例模式和静态方法类的区别相关推荐

  1. java 静态变量 存储_Java中存储的静态方法和静态变量在哪里?

    静态方法(实际上所有方法)以及静态变量都存储在PermGen部分,因为它们是反射数据的一部分(类相关数据,而不是与实例相关的). 需要澄清的最新情况: 注意,只有变量及其技术值(原语或引用)存储在Pe ...

  2. java 不能继承的类_java中不能继承的类有哪些?

    在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的. 因为jdk的开发者认为,有一些最基本的类没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题 ...

  3. java的日历类_java 中的Calendar日历类

    一.java 中的Calendar日历类解析 Calendar类是一个抽象类public abstract class Calendar implements Serializable, Clonea ...

  4. java正则表达式类_java中正则表达式之Pattern类与Matcher类

    java中正则表达式之Pattern类与Matcher类 ======================================================================= ...

  5. java几何体类_java中Graphics2D的几何图形类有哪些?实例展示

    随着时代的进步与发展,越来越多的人开始投入到java的学习中来.今天就来为大家介绍一些java基础知识,java中Graphics2D的几何图形类有哪些,并且通过实际的代码为大家展示. java中Gr ...

  6. java异常类_java中常见的异常类

    展开全部 从异常类的继承架构图中可以看出:Exception 类扩展出数个子类,其中 IOException.RunntimeException 是较常用的两种. 习惯上将 Error 与 Excep ...

  7. java中的并发类_java中并发常用工具类

    前言:在你无聊的时候,想想比你优秀还努力的人,也许就不觉的无聊了 今天下午没事干把买的java并发编程艺术这本书拿出来看了看,看了下也记不住,还是好记性不如烂笔头,今天讲四个并发中可能会用到的工具类, ...

  8. java访问方法修饰词四个_java中的四个修饰词(访问权限)

    Java类成员的访问控制权限 有了包的概念之后,下面就可以开始为读者讲解 JAVA 语言之中的访问控制权限 的概念了.在 JAVA 中有四种访问控制权限,分别为:private.default.pro ...

  9. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

最新文章

  1. 《一个操作系统的实现》——pmtest1.asm详解
  2. Spring单例的线程安全性
  3. iOS开发:iPhone6、6 plus适配
  4. 表单数据自动录入_智能记账系统,公式已设好,可直接录入数据,凭证报表自动生成...
  5. LeetCode 546. 移除盒子(DP)*
  6. web开发——Flask框架
  7. 信息学奥赛一本通C++语言——1077:统计满足条件的4位数
  8. C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
  9. 大数据开发笔记(八):Spark综合笔记总结
  10. azkaban 入门简介
  11. 用Bolt引擎实现换肤指南
  12. 为什么便利店晚上顾客很少?还要24小时营业?
  13. java股票行情接口展示
  14. 深度 | 苹果略胜微软一筹,为什么说 ARKit 是 AR 的最好选择?
  15. 属于python保留字的是_属牛的女人全集:属牛女的性格、命运、属相婚配表等-第一星座网...
  16. java单例模式的应用场景_java项目中单列模式适用于什么场景?
  17. 微信小程序picker地区选择器显示省市二级联动
  18. Linux下重启mysql的正确方法
  19. sa387gr11cl2相当于什么材料,sa387gr11cl2对应国内材质
  20. Exception in thread main java.lang.NoClassDefFoundError: goetl/etl/Ip2Plac

热门文章

  1. 办理护照(学生集体户口)
  2. windows10命令行窗口cmd路径切换
  3. 解决Windows远程桌面RDP中使用Opengl出错的问题
  4. 实力见证!企企通斩获「2021年软件行业应用领域领军企业」殊荣
  5. 测鬼记(中)之奋斗——圈子
  6. 农药化工企业设备管理制度参考-PreMaint推荐
  7. mac连接终端吐血推荐termius
  8. VSCODE 好看的亮色系主题,收藏起来
  9. linux实现双网卡不同网段互通
  10. 【TiDB 最佳实践系列】开发 Java 应用使用 TiDB 的最佳实践