我是靠谱客的博主 顺心冥王星,最近开发中收集的这篇文章主要介绍Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池
自动装箱、拆箱
- 装箱:将基本类型用他们对应的引用类型包装起来
Integer num = 88;//自动装箱,88为int类型,自动装箱成Integer类型
- 拆箱:将包装类型转换为对应的基本类型
int number = num;//自动拆箱,将Integer类型num拆箱为int
8种基本类型对应的引用类型
基本类型 | 引用类型 |
---|---|
byte(1字节) | Byte |
short(2字节) | Short |
char(2字节) | Character |
int(4字节) | Integer |
long(8字节) | Long |
float(4字节) | Float |
double(8字节) | Double |
boolean(未定) | Boolean |
8种基本类型的包装类和常量池
- Byte、Short、Integer、Long、Character、Boolean都实现了常量池技术。
- Byte、Short、Integer、Long四种包装类都默认创建了数值[-128,127]的相应类型的缓存数据。
- Character则是[0,127]。
- Boolean则是直接返回true或者false。
- Float和Double没有实现常量池技术。
Integer a = 88;
Integer b = 88;
System.out.println(a==b);
//true ; 数值在默认常量池中
Integer aa = 128;
Integer bb = 128;
System.out.println(aa==bb);
//false;数值超过了默认常量池[-128,127],因此各自新建对象
Double aaa = 3.3;
Double bbb = 3.3;
System.out.println(aaa==bbb);
//false;Double没有实现常量池技术,Float同理
一个帮助更好理解的例子:
Integer i1 = 22;
Integer i2 = 22;
Integer i3 = 0;
Integer i4 = new Integer(22);
Integer i5 = new Integer(22);
Integer i6 = new Integer(0);
System.out.println("i1=i2 " + (i1 == i2));
//true;因为40在默认常量池中,i1、i2用到的是同一个常量
System.out.println("i1=i2+i3 " + (i1 == i2 + i3));
//true;i2+i3操作自动拆箱后进行;相加后类型为int;
//比较时,i1也自动拆箱
System.out.println("i1=i4 " + (i1 == i4));
//false;i4创建了新的对象,没有用默认常量池中的常量
System.out.println("i4=i5 " + (i4 == i5));
//false;
System.out.println("i4=i5+i6 " + (i4 == i5 + i6));
//true;自动拆箱后执行+操作,然后i4自动拆箱后判断是否相等
System.out.println("40=i1+i3 " + (40 == i1+i3));
//true
System.out.println("40=i5+i6 " + (40 == i5 + i6));
//true;自动拆箱后执行+操作,相加后类型为基本类型int;
//与40比较是否相等
最后
以上就是顺心冥王星为你收集整理的Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池的全部内容,希望文章能够帮你解决Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复