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

概述

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

自动装箱、拆箱

  1. 装箱:将基本类型用他们对应的引用类型包装起来
Integer num = 88//自动装箱,88为int类型,自动装箱成Integer类型
  1. 拆箱:将包装类型转换为对应的基本类型
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没有实现常量池技术。

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种基本类型的包装类和常量池所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部