Java包装类型

部分内容引用自网络

数据类型

java的数据类型:

  • 基本类型: int,boolean,float
  • 引用类型:所有class类型

如果把一个基本类型视为对象?(引用类型)?
不行

但是我们可以换一个方法,可以定义一个Integer类,包换一个实例字段int

  • 可以把integer视为int的包装类型(wrapper)

包装类型是引用类型, 只不过内部只有一个基本类型的变量。

JDK为每种基本类型都创建了对应的包装类型

这里要知道的是 JDK为每种基本类型都创建了对应的包装类型:

基本类型对应的应用类型
booleanBoolean
byteBoolean
shortBoolean
intInteger
longLong
floatFloat
doubleDouble
charCharacter

这里有两个比较特殊的 int 和char 注意看

int、integer和String的相互转换

这里写图片描述

自动装箱,自动拆箱

我们也可以让编译器自动在int和Integer之间转型:

  • 自动装箱:auto boxing
    int -> Integer

    Integer n = 99; //Integer.valueOf(99)
    int i = n; // n.intValue()
  • 自动拆箱:auto unboxing
    Integer -> int

    Object[] arr = new Object[1];
    arr[0]= 999;// Integer.valueOf(999)
  • 自动装箱和自动拆箱只发生在编译阶段

  • 装箱和拆箱会印象执行效率
  • 变异后的class代码是严格区分基本类型和引用类型的
  • integer -> int 执行时可能会报错
Integer x = null;
int y = x //NullPointerException

已定义的静态变量

包装类型还定义了一些有用的静态变量

Boolean t = Boolean TRUE;
Boolean f = Boolean.FALSE;
int max = Integer.MAX_VALUE; //2147483647
int min = Integer.MIN_VALUE;//-2147483648
int sizeOfLong = Long.SIZE;//64(bits)
int bytesOfLong = Long.BYTES;//8(bytes)

可以利用向上转型把任意一种包装类型先变成number对象,然后再用特定方法把它们转换成基本类型

Number num = new Integer(999);
byte b = num.byteValue();
int n = num.intValue();
long ln = num.longValue();
float f = num.floatValue();
double d = num.doubleValue();

这里写图片描述

编译器会自动进行拆箱操作然后进行加法运算
然后把Integer类型向上转型为Number类型然后通过Number的floatValue方法得到浮点值打印出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值