饿汉懒汉单例设计模式的使用及区别、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核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚 💡涉及的知识点速通🛫 关于…

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

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

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

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

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

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

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

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

使用Redis完成商品秒杀业务

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

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

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

“毕业季”|一个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知识点速览&#…

【Swagger】看这一篇就够了

各位小伙伴们大家好,欢迎跟着小扎扎一起学习【Swagger】这门技术,在本片博客中我对B站狂神的Swagger教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡Swagger知识点…

用python画大雄_python制作斗图生成器

网上各种带文字的表情图片都被大家玩坏了,今天就和大家一起用 python 亲自做一个带字表情图片生成器。 不知道大家有没有看到网上有很多人都在说 "人生苦短,我用 python",这句话我之前也不是很理解,觉得人生苦短和用pyt…

【spring cloud】(一)使用idea创建可相互调用的多模块应用

各位小伙伴们大家好,欢迎来到这个小扎扎的spring cloud专栏,在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡spr…

python字符串百分号_Python字符串格式化的2种方法

本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下 用于字符串的拼接,性能更优。 字符串格式化有两种方式:百分号方式、format方式。 百分号方式比较老,而format方式是比较先进的&#xff…

【踩坑,已解决】spring cloud删除子模块后创建同名模块时遇到的删除不净,java、resources包失效,java、resources包被标记为模块等问题

💡问题速览📌 问题复现📌 没有任何操作,model又出现了📌 模块重建后java、resources包失效📌 模块重建后java、resources包被标记为了模块📌 问题复现 本人是在跟着B站尚硅谷的视频练习Spring c…

蓝牙扫描过程解析_智慧定位系统之蓝牙网关在室内定位技术的原理浅析-新导智能...

蓝牙室内定位技术是利用在室内安装的若干个蓝牙局域网接入点,把网络维持成根据多用户的基础网络连接形式,并确保蓝牙局域网接入点始终是这个微网的主设备,然后经过丈量信号强度对新加入的盲节点进行三角定位。苏州新导实时定位体系(RTLS)和室…

【spring cloud】(二)服务的注册发现——Eureka

各位小伙伴们大家好,欢迎来到这个小扎扎的spring cloud专栏,在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ 💡spr…

新手攻略熔炉_我的世界攻略:生存模式新手攻略

《我的世界》(英文:《minecraft》)是一款风靡全球的高自由度沙盒游戏,由瑞典MojangAB和4J Studios开发。国际版由微软Mojang工作室开发,中国版由网易代理。Minecraft着重于让玩家去探索、交互,并且改变一个由一立方米大小的方块动态生成的地图…