一颗野生种子计划收集原力
分类栏目:Java高级特性的原理
版权
什么是包装?
Java设计的一个核心原则是,一切都是对象,也就是说,一切都需要以对象的形式来描述,但是基本的数据类型不是对象,这是非常尴尬和矛盾的。为了解决这个令人尴尬的矛盾,基本数据类型被打包到一个对象中,并且这些类型以面向对象的方式使用。
包装功能?
它是以基本数据类型封装的形式描述的,这使得函数更加健壮。例如,如果缺省情况下整数不是int的0而是null,那么与基本数据类型相比,它对打包的类对象来说还有一个状态,就像你是国王一样。除了0表示您没有记录之外,null还表示您运行了一半。
另一个直观的事情是包装器类为我们提供了许多使用方法,例如,数据可以被转换成二进制,最大值和最小值可以被查看。
除了以上所述,还有另一个要点:基本数据类型不能存储在集合中,只能存储对象,所以在使用集合时,我们需要使用打包类对象。
什么是包装和拆包?
打包:将基本数据类型转换为相应的打包类对象。
解包:打包类对象被转换成相应的基本数据类型。
(包装和拆包、自动包装和拆包操作俯视图)
Java提供了八种数据类型,对应于八种打包类型
基本数据类型包装类型
字节字节
短命
intInteger
龙龙
浮动浮动
doubleDouble
charcharcharacter
布尔字节
注意:
有人想知道吗?为什么没有弦???
或者看到我文章的小朋友发现了它。您是否经常忘记基本数据类型,并随身携带字符串(→ _ →)
请记住,字符串不是Java中的基本类型,字符串是一个对象
好吧,说重点
填充操作
将基本类型转换为相应的打包类对象
第一种包装方法:直接使用新的
int i = 10
整数数量=新整数(I);
系统输出打印(数字);
1
2
3
第二种打包方法:调用valueOf()
整数num_2 =整数值(20);
System.out.println(“调用valueOf()的方法”:+num _ 2);
1
2
运行结果
扩展点:
细心的朋友,你会发现,嘿,印刷对象不应该是地址,而是数字吗?
上面写了什么?
ToString也包含在打包类中
公共字符串到字符串(){
返回到字符串(值);
}
1
2
3
拆包操作
与打包相反,打包类对象被转换成相应的基本数据类型
调用IntValue来解包,这里实际上是将整型转换为整型
整数num_1 =整数值(20);
int num _ 2 = num _ 1 . int value();
system . out . println(num _ 1);
system . out . println(num _ 2);
1
2
3
4
运行结果
(直观的区别是num_1变量是一个整数包装类对象,所以您可以调用一个方法,而num_2是一个基本类型int。)
自动包装
基本数据类型直接分配给打包类对象
整数num _ 1 = 66
system . out . println(num _ 1);
1
2
自动拆包
包类对象直接分配给基本数据类型
整数num _ 1 = 66
int num _ 2 = num _ 1;
system . out . println(num _ 2);
1
2
3
运行结果
太神奇了,不是吗??
我们不必自己打包行李
相信你的野生种子!非常糟糕。
那是谁为我们做的?
当然,这是我们的JVM。当我们编译它的时候,我们增加了它的值并装箱
想问我怎么知道吗?
偷偷告诉你,使用反编译工具查看编译后的类文件,有代码和真理
我在编译的时候为你添加的。我没想到会这样,哈哈
有一个这样的术语叫做:语法糖
吃完这个语法糖后,我帮你做了作业,真的很甜。
自动打包和解包本质上是在编译时为您添加值Of或intValue
自动包装值
整数num_1 =整数值(66);
1
自动解包输入值
int num _ 2 = num _ 1 . int value();
1
最后:
如果我们深入一点,我们可以再次分析这两个关键词的一些机制:valueOf和intValue,但是昨天这篇文章写了我一整天,今天早上它还在修修补补,时间总是来去匆匆。我想我只能留下来写一次。自从我开始写博客,我写得很慢,但这也是非常真实的,因为分享我所能和认真的是我不变的信条。如果你能读这篇文章,它表明我们彼此非常亲近。我希望给你一些帮助。这不容易创造。拿走我文章的知识。我最大的动机是和你在一起,表扬,评论和关注。
———————————————
版权声明:本文是CSDN博主“一颗野生种子”的原创文章,符合CC 4.0 BY-SA版权协议。请附上原始源链接和此声明。
原始链接:https://blog.csdn.net/A_hxy/article/details/106967415