黑马程序员之装箱与拆箱(享元设计模式的应用)

ESP32-S3双模CMSIS-DAP调试器:USB+WiFi无线调试方案 CMSIS-DAP是ARM生态中标准化的嵌入式调试协议接口,广泛用于Keil、IAR、STM32CubeIDE等开发环境。其核心原理是通过SWD/JTAG物理层实现目标芯片寄存器访问、内存读写与断点控制,依赖确定性时序和低延迟通信。传统DAPLink调试器受限于USB线缆束缚,而WiFi-USB-DAPLink项目将完整CMSIS-DAP v2协议栈移植至ESP32-S3平台,同时支持USB CDC直连与WiFi TCP远程通道,兼顾实时性与网络化部署能力。该方案无需主机驱动、兼容主流IDE,并支持多机并发 阅读详情
------- android培训、 java培训、期待与您交流! ----------
下面这个小例子,有一个注意点就是:对于-128~127之间的数转化成的Integer对象,用==比较结果是相等的,也就是返回结果是true;而在这个范围外的用==比较结果是不相等的,也就是false的。
总结:
/**
* 上面说的这种情况,其实是一个设计模式:把一个字节内-128~127之间的数分别封装成256个Integer对象,存储到内存缓存区, 程序中用到的所有数字(比如3),都共享一个3的对象,不用每次都去创建一个新的3的对象,这样节约了资源。
* 享元设计模式flyweight:运用共享技术有效地支持大量细粒度的对象。
* 也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。
* 比如说一个文本系统,每个字母定义一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。
* 如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。
* 那么如果要是每个字母都共享一个对象,就大大节约了资源。
* 比如:在windows系统,需要很多图标,使用频率很高,把它定义成一个对象,
* 不同的属性变成外部状态,相同的属性编成内部状态
*/
package fighting;
/**
 * 装箱与拆箱
 *
 */
public class AutoBox {


public static void main(String[] args) {
//jdk1.5以前这样直接把基本数据类型赋给一个对象是不对的,装箱与拆箱算是Jdk1.5的新特性
//装箱,jdk1.5自动把基本数据类型int装箱成一个Integer对象
Integer iObj = 3;
//拆箱:Integer对象是不支持加法的,
//看下面这句代码,之所以能够直接用Integer对象和12相加,
//是因为jdk1.5会把iObj转换成基本类型(即拆箱),再进行相加
System.out.println(iObj+12);//15

Integer i1 =13;
Integer i2 =13;
System.out.println(i1==i2);//true


Integer i3 =137;
Integer i4 =137;
System.out.println(i3==i4);//false
System.out.println(i3.equals(i4));//true

//对于基本数据类型的整数-128~127之间的数据在装箱成Integer对象的时候,
//会把它们放到一个缓存区,等下次要把基本类型当成Integer对象使用的时候,
//会先看缓存区有没有这个,因为一般小的整数使用的频率比较高
//大的整数(在-128~127之外的数)装箱后,拆箱出来会是不同的整数。


Integer i5 = Integer.valueOf(3);
Integer i6 = Integer.valueOf(3);
System.out.println(i5==i6);//true

Integer i7 = Integer.valueOf(128);
Integer i8 = Integer.valueOf(128);
System.out.println(i7==i8);//false
System.out.println(i7.equals(i8));//true
}
}
在此,在总结一下:equals和==的区别?
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。


保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码) 本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。 阅读详情

相关推荐

从DC到DCG:手把手教你搭建物理感知综合流程(含DEF文件处理避坑指南)

本文详细介绍了从Design Compiler(DC)过渡到DC Topographical(DCT)和DC Graphical(DCG)的完整操作框架,特别针对DEF文件处理提供避坑方案。通过环境准备、工具升级、DEF文件处理、DCG综合配置等步骤,帮助开发者高效应对28nm以下工艺节点的物理感知综合挑战,显著提升时序收敛效率。

weixin_27966471的博客 377

【自动装箱、自动拆箱】享元设计模式:对于小的整数,装箱装成的对象都是同一个

package com.xiaozhi.box; public class Test { public static void main(String[] args) { //自动装箱 Integer integer1=13; Integer integer2=13; //自动拆箱 System.out.println(integer1+2); //享元设计模式

闲着没事_玩玩JAVA的专栏 573

高效穿搭博主内容制作指南:DeepSeek+豆包+即梦AI+剪映黄金工作流

大家好,我是硅基打工人! 只需3步实现AI自动化生成穿搭带货图文,日均产出效率提升10倍

TuFuir的博客 2673

黑马程序员—Java基础加强 (基本数据的自动拆装箱及享元设计模式)

public class AutoBox { public static void main(String[] args) { //自动装箱,自动把一个基本数据类型装成一个Integer对象再赋给引用变量 Integer iobj = 3; //自动拆箱,Integer对象不支持加法,自动把它转换成基本数据类型再进行加法运行。 System.out.println(iobj +

welcome to my blog,thank you! 651

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 449

别再死记硬背了!用这5个Qt Design Studio小项目,彻底玩转核心组件

本文通过5个Qt Design Studio实战项目,帮助开发者深入理解核心组件的协作与应用。从动态登录界面到游戏化任务列表,每个项目都展示了组件属性与交互设计的巧妙结合,让你不再死记硬背,而是真正掌握Qt Design Studio的核心技能。

weixin_29202213的博客 271

《黑马程序员》 jdk 1.5的新特性:自动装箱与拆箱练习及享元设计模式

/** * jdk 1.5的新特性:自动装箱与拆箱练习及享元设计模式 * * @param args */ public static void main(String[] args) { String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(

青云志,我心不死,必度青天... 911

细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

wenchm的博客 1637

黑马程序员_ java高新之自动装箱与拆箱(引入设计模式:享元模式)

------- android培训、java培训、期待与您交流! ----------

u010886101的专栏 647

华为防火墙介绍和原理,配置详细解析

在出向外网的流量中,我们使用默认路由来指定默认的出口,并且使用nat地址转换,而在外网中,我们使用ISIS协议来进行路由的学习和更新,让外网可以访问到dmz非军事化区域的server1服务器。并进行NAT转换,实现了内部IP地址和外部IP地址之间的映射,以便内部网络可以与外部网络进行通信。网络地址转换(NAT):防火墙可实现网络地址转换,将内部私有IP地址转换成公共IP地址,以隐藏网络拓扑结构,增加网络安全性。确定安全需求:根据企业的安全需求和策略,确定防火墙的配置目标和规则。

外游者 5096

【一 扣子客户案例合集】【 1.3 识典古籍基于扣子智能助手的古籍数字化全流程技术解析】

古籍数字化智能处理系统全流程解析 本文详细介绍了基于扣子智能助手的古籍数字化解决方案,核心技术包括: 多层级架构设计:采用"云-边-端"三层次架构,整合高精度扫描设备与AI处理模块,实现从物理古籍到结构化数据的全流程自动化。 智能图像处理:通过12道预处理工序(包括畸变校正、污渍去除和对比度增强)处理古籍图像,采用改进的EAST算法和ViT模型实现高精度文字检测与识别,准确率达98.7%。 NLP增强处理:结合Transformer-XL预训练模型和N-gram语言模型进行文本校正,基于

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1440

黑马程序员——静态导入,可变参数,自动拆箱装箱以及享元设计模式 JDK1.5新特性

----------------------    android培训    java培训   期待与您交流!    ----------------------                               package zhangxiaoxiang.bank; //import static java.lang.Math.max;//单独导入Math类中的一个max

知识搬运工,资料任你拿,包括书籍、电影、电视剧、网站、软件等,VX公人人人号:向前书局 3289

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 591

黑马程序员--高新技术--静态导入,基本数据类型拆箱与装箱,享元设计模式

--------------------- android培训、java培训、java学习型技术博客、期待与您交流! -------------------   --------------------- android培训、java培训、java学习型技术博客、期待与您交流! -------------------

萧萧北keno的专栏 1296

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

黑马程序员_03_享元设计模式Flyweight

------- android培训、java培训、期待与您交流! ----------    package studybase; public class HelloWorld3 { /**  * @param args  */ public static void main(String[] args) { // TODO Auto-generated metho

u011453546的专栏 513

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

黑马程序员——Java5的新特性

------- android培训、java培训、期待与您交流! ---------- Java5的新特性 1、静态导入 使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。 import 语句可以导入一个类或某个包中的所有类。 import static 语句导入一个类中的某个静态方法或所有静态方法。 例如: impor

chenweizuo的专栏 434

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员Java基础加强9-16学习日记

1,一个方法接受的参数个数不固定,称为可变参数,其特点是:  (1)只能出现在参数列表的最后;  (2)...位于变量类型和变量名之间,前后有无空格都可以;  (3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。2,增强for循环语

qiyun2012的专栏 373

黑马程序员_基本数据的自动拆装箱及享元设计模式

------- android培训、java培训、期待与您交流! ---------- 自动拆箱与装箱:          在JDK1.5中引入了自动拆箱/拆箱功能,可以实现简单类型和对应的封装类型的数据之间的转换。          例如: Integer i = 100;  这在JDK1.5之前是非法的.你不能把简单的数据类型赋值给引用类型变量.而在JDK1.5中.你可以通过自动

hx986853815的专栏 625

黑马程序员-Java高新技术_基本数据的自动拆装箱及享元设计模式视频学习笔记...

----------------------android培训、java培训、期待与您交流! ---------------------- 装箱:把基本数据类型装成java类(被托管?)。 拆箱:把java类拆成基本数据类型(取消托管?)。 ...

auu54806的博客 217

黑马程序员_基本数据的自动拆装箱及享元设计模式简介

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

LoveMyAbel的专栏 772

享元(flyweight)设计模式

11_黑马程序员_张孝祥_Java基础加强_基本数据的自动拆装箱及享元设计模式 public static void main(String args[]) { Integer i11 = 1; System.out.println(i11 + 2); Integer i12 = 1; System.out.println(i11 == i12); ...

weixin_30877755的博客 79

黑马程序员:关于JAVA中的自动装箱拆箱

------- android培训、java培训、期待与您交流! ----------    自动拆箱/拆箱功能是JAVA在JDK1.5中引入的,可以实现基本类型和对应的封装类型的数据之间的转换,例如: Integer i = 1; 这在JDK1.5之前是非法的。不能把基本数据类型赋值给引用类型变量。而在JDK1.5中,你可以通过自动装箱。讲简单数据类型封装到对应的封装类中。形如: In

Austin_yudao的专栏 577

黑马程序员_JAVA的自动装箱和拆箱

自动装拆箱和享元设计模式 1、自动装箱和拆箱的概念 自动装箱:是基本数据类型在运算的时候,自动转换成对应的包装类型。 自动拆箱:是包装数据类型在参与运算的时候,自动转换成基本数据类型参与运算。 例如: Integer iObj = 3;//自动装箱为Integer System.out.prinrtln(iObj + 1);...

weixin_34166847的博客 170

黑马程序员_高新基础知道点

------- android培训、java培训、期待与您交流! ----------     静态导入:   import语句可以导入一个类或某个包中的所有 import static语句导入一个类中的某个静态方法或所有静态方法 语法举例: import static java.lang.Math.max; import static java.lang.Math.* 当

limumu100的专栏 687

黑马程序员——Java可变参数、增强for循环

一、Javad静态导入:导入简化书写并不占用资源 import语句可以导入一个一个类或者某个包中所有的类 import static导入一个类中所有的静态方法,导入后可以省略书写 (两个静态方法的补充:Math.max(a, b);得到两个数中较大的一个数 Math.abs(a-b)得到两数差的绝对值) 二、可变参数 overload和override的区别:覆写就是在父类有的方

天赐绝尘 766

黑马程序员:基础加强

---------------------- android培训、java培训、期待与您交流! ----------------------     静态导入:  import语句可以导入一个类或某个包中的所有类。     import staitc 语句是导入一个类中的某个静态方法或所有静态方法 可变参数:  问题:一个方法接受的参数个数不固定。  例如:System.

a02156175的专栏 341
上一篇: 学习笔记之socket编程
下一篇: 黑马程序员之反射的两个小例子
wangpanbaoding
博客等级 码龄18年 42粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值