我是靠谱客的博主 顺心冥王星,这篇文章主要介绍Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池,现在分享给大家,希望可以做个参考。

Java中自动装箱、拆箱概念以及8种基本类型的包装类和常量池

自动装箱、拆箱

  1. 装箱:将基本类型用他们对应的引用类型包装起来
复制代码
1
2
Integer num = 88//自动装箱,88为int类型,自动装箱成Integer类型
  1. 拆箱:将包装类型转换为对应的基本类型
复制代码
1
2
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种基本类型的包装类和常量池

  1. Byte、Short、Integer、Long、Character、Boolean都实现了常量池技术。
  2. Byte、Short、Integer、Long四种包装类都默认创建了数值[-128,127]的相应类型的缓存数据。
  3. Character则是[0,127]。
  4. Boolean则是直接返回true或者false。
  5. Float和Double没有实现常量池技术。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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同理

一个帮助更好理解的例子:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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种基本类型内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部