饿汉懒汉单例设计模式的使用及区别、java中的import关键字

在这里插入图片描述

  各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚

💡涉及的知识点速通

  • 🛫 关于包你都知道什么?
    • 🪂 包名该如何定义?
    • 🪂 什么是无名包?
    • 🪂 关于import关键字应该知道什么?
  • 🛫 什么是单例设计模式?
    • 🪂 饿汉式单例模式
    • 🪂 懒汉式单例模式
    • 🪂 两种模式的区别

🛫 关于包你都知道什么?

🪂 包名该如何定义?

  为什么要引用包的概念呢?使用包的最主要的原因就是为了保证类名的唯一性,因为使用到类的时候会带上它的包名,一个包中又不会存在一个签名一样的方法,方法签名的概念参考这篇博客的方法重写与重载问题部分。

  一般来说,包的命名方式都是采用因特网域名的逆序形式,因为因特网的域名肯定是唯一的。比如说:域名为horstmann.com可以将其包名命名为com.horstman,再追加上工程名为com.horstman.bean,如果再加上类名为com.horstman.bean.Employee,这就组成了这个Employee类的完全限定名

  还有在认知上比较重要的一点就是,从编译器的角度上来看,嵌套的包与包之间并没有任何的关系,每一个包都是独立的一些类的集合。例如java.util包和java.util.jar包之间就毫无关系

🪂 什么是无名包?

  说完包的命名,我们来说一说该如何将一个类放在指定的包中,在源文件的第一行使用package语句指定类所在的包位置,这一步基本上所有的IDE工具在创建类的时候都会自动生成(所以我们就关注的很少)
  如果不使用package指定包位置的话,这个类就直属于无名包,无名包是最上层的包结构,不使用package指定的类指定的类直属于无名包,其他的类在无名包下的指定包目录下间接属于无名包在这里插入图片描述

🪂 关于import关键字应该知道什么?

  一个类可以使用它所属包中的所有类,以及其他包里的public类,这里的使用指的是,通过实例化对象或者类名调用等方式操作类中的属性。使用其他包里的public类的方式一共有两种,一种就是使用该类的全限定名,另外一种就是import在这里插入图片描述  如果需要使用到这个包里的很多类的话,不必一个类一个类的import,可以使用通配符 * 实现在这里插入图片描述  正如我们所知,Java的核心类库中存在很多的命名相同的类,如果你import的两个包中存在名称相同的类,此时使用这个类会用到哪个?如果这两个包中的同名类都需要使用的话又该怎么办?在这里插入图片描述  import除了可以导类之外还可以具体到类中的静态属性,使用import导入类中的static方法字段之后就可以直接使用该静态属性,而无需使用类名调用在这里插入图片描述

🛫 什么是单例设计模式?

  所谓类的单例设计模式,就是采取一定的方法保证在这整个系统中一个类只能存在一个实例对象,而且该类中只提供一个获得它的实例对象的方法。想要完成以上的构想,首先就必须将类构造器的访问权限设置为private防止随意在类的外部通过new创建实例对象,类外部无法创建实例对象所以只能通过类内部的静态方法,所以在类内部使用静态方法创建并返回该类的对象,由于静态方法内部只能访问静态资源,所以该类对应的对象变量也要定义为静态的

单例设计模式也为两种,饿汉式和懒汉式

🪂 饿汉式单例模式

  所谓的饿汉式就像是一个饥饿的人的心态一样,他想一到家就已经有人做好了饭可以直接吃。对应到Java就是提前创建好该类的实例对象,使用类调动静态方法的时候直接返回这个已经创建好的对象,所以说使用这种静态方法创建的对象是同一个,使用==判断地址一致在这里插入图片描述

🪂 懒汉式单例模式

  所谓的懒汉式就像是一个懒惰的人一样,等到他饿的时候才去看自己有没有做饭,有过有的话就直接吃,没有的话就做完再吃。对应到代码实现就是,在静态方法中判断实例对象变量是否为null,null的话就new个对象返回,不为null的话直接返回在这里插入图片描述

🪂 两种模式的区别

  所谓的饿汉式和懒汉式的区别就是创建对象的时间不同,饿汉式是类加载的时候就创建好调用就返回,懒汉式则是在静态方法内部判断后创建并返回。于是带来第一个不同点:饿汉模式在类加载的时候就会创建对象,这样的话就会长时间加载对象导致内存资源的耗费;而懒汉模式只有在调用静态方法的时候才会创建对象,这样的话就会延迟创建对象性能就可以得到提高
  但是懒汉模式也并不是都是好处,因为懒汉式涉及到了一个判断的过程,于是就导致它在多线程并发的环境下会出现安全问题,而饿汉模式是线程安全的。如果想要保证懒汉模式的线程安全,可以在getInstance方法的声明上加synchronize关键字,锁住方法体使之安全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广电运通不好进吗_我可以说郑州新风的安装大部分都是垃圾吗?

说郑州的新风安装都是垃圾,这话很无礼,很自大,很傲慢,但是我能说确实是这样嘛?其实包括我以前安装的也不合格——虽然我不是故意的。这几年见过许多家同行安装的新风,可以说目前见到的很多家都不合格&#…

Java迭代器和Collection接口

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

atlas安装需要kafka吗_Atlas 2.1.0 实践(2)—— 安装Atlas

在完成Atlas编译以后,就可以进行Atlas的安装了。Atlas的安装主要是安装Atlas的Server端,也就Atlas的管理页面,并确保Atlas与Kafka Hbase Solr等组件的集成。Atlas的系统架构如下,在确保 底层在完成Atlas编译以后,就可以…

ue4中隐藏灯光和相机图标_[HDRP]物理灯光是什么?科普向

HDRP抛弃了Bulitin的灯光,改用物理单位以及物理属性。那么物理灯光到底是什么?请点赞评论来支持作者,提前祝大家新年快乐。https://connect.unity.com/p/hdrp-wu-li-deng-guang-shi-shi-yao-ke-pu-xiang​connect.unity.com同步更新unity con…

私钥经过哈希计算可以产生公钥_「区块链基础概念100」:公钥和私钥 | 027

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。小编:记得关注哦投资区块链,猛戳:火星财经App下载来源:学习区块链原文标题:「…

关于List集合类ArrayList、LinkedList、Vector详解

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

1562a检测软件_洛达1562a空间音频版评测!!!

哈喽大家好!这里是小泽,一个不专业的Beatboxer~~~今天给大家带来一期HQB最新空间音频版洛达1562a耳机的评测视频,建议先赞再看!(滑稽)听说你不点赞?昨晚拍了一晚,但是因为是第一次搞…

python 趣味编程课_青少年编程:Python趣味编程基础入门课程

课程目录 章节1:编程课前说明试看 课时1 编程课前说明07:49可试看 章节2:第一章 Python基础-认识环境试看 课时2 1、什么是计算机程序和编程?08:48可试看 课时3 2、为什么学习编程?03:10可试看 课时4 3、Python的安装11:48可试看 课时5 4、用Python编写第…

shell181网格划分_ANSYS中Shell181单元介绍谁知道

再毕业设计做模型中要应用到SHELL181单元,那么这个单元有什么好处谁能具体的告诉我下,我有英文但是有的地方翻译不通。或者谁能帮我翻译一下~谢谢~SHELL181issuitableforanalyzingth...再毕业设计做模型中要应用到SHELL181单元,那么这个单元有…

关于Set集合类你都知道什么?来自《卷Ⅰ》的灵魂提问

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

流程图虚线框表示什么_UI设计|APP的交互线框布局设计

一.流程图设计流程图(Flow Chart):用图示的方式反映出特定主体为了满足特定需求而进行的有特定逻辑关系的一系列操作过程。流程图的四种基本结构:顺序结构,条件结构(又称选择结构),循环结构,分支结构。1.流程图的常用符…

使用Redis完成商品秒杀业务

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

表格列隐藏_【excel每日提升】Excel隐藏列,不让别人打开!

【新朋友】点击标题下面蓝色字“王俊东“关注。 【老朋友】点击右上角,转发或分享本页面内容。excel系列课程excel特效系列课程开始了,今天第2节!第1节:Excel有公式的单元格标记颜色,很简单!第2节&#xf…

map与weakmap,ES6 Map和WeakMap有什么区别?

Looking this and this MDN pages it seems like the only difference between Maps and WeakMaps is a missing "size" property for WeakMaps. But is this true? Whats the difference between them?解决方案The experienced JavaScript programmer will notice…

“毕业季”|一个java开发实习生的OFFER之路

哈喽哈喽大家好,这里是小扎扎的博客。相信有关注过我的好盆友们可能会发现我已经有一段时间没有出来划水了,那么这段时间小扎扎都在干什么呢?没错!我确实是去找实习了!接下来就给大家介绍一下本次战役的战况如何 活动地…

virtualbox 该内存不能为written_系统提示“该内存不能为read”的原因和解决办法...

我们单位的电脑经常显示这个对话框,已经有好几年了,单位的老头们都不怎么懂电脑,我本人也不爱管闲事。但是出现这种对话框的原因是什么呢?又怎么解决呢?一般电脑经常出现蓝屏和死机,而且频繁出现。有时会出…

插件properties_Mybatis3系列 - 4. mybatis-config的properties属性详解

前两章简单的讲解了MyBatis的使用方式. 接下来先全局的说一下MyBatis的全局的xml配置详细说明.XML格式定义-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">configuration 的映射文件(根据定义顺序说明)properties 属性…

【Redis 6】秒杀业务——分布式锁

各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站黑马的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Redis知识点速览&#…

python读取文件最后几行_如何用python获取文件的最后一行,文件可能会比较大

展开全部 #!/usr/bin/env python import os import sys def get_last_n_lines(logfile, n): blk_size_max 4096 n_lines [] with open(logfile, rb) as fp: fp.seek(0, os.SEEK_END) cur_pos fp.tell() while cur_pos > 0 and len(n_lines) < n: blk_size min(blk_si…

360oauth token是什么意思_Oauth/access token

oauth/access_token第三放应用使用开始的request_token来换取用户授权过的Access_tokenURL格式标准的OAuth http返回格式HTTP请求方式POST请求数限制false请求参数oauth_consumer_key: 创建应用时生成的APP KEY。oauth_token:经过用户授权的Request Token。oauth_signature_met…