包装类

2018-12-28  本文已影响0人  想飞的键盘手

为什么会有基本类型的包装类

常用操作

基本数据类型和包装类的对应

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

基本数据类型包装类有八种 有七种都有(除了char的包装类 )parseXXX的方法 可以将这七种的字符串表现形式转换成基本数据类型

将int 转String

String 转int

(JDK5 的新特性)

自动装箱 : 把基本类型转换为包裹类型

自动拆箱 : 把包裹类型转换为基本类型

// JDK1.5 之前

int x=100;
Integer i1 = new Integer(x);// 将基本数据类型包装成对象,装箱
int y = i1.intValue();// 将对象转换为基本数据类型,拆箱
// JDK1.5 版本之后

Integer i2 = 100;// 自动装箱
int z = i2 +100;// 自动拆箱
// 底层实现如上所述

eg:
Integer i3 = null;
int a = i3+100;// 底层用i3调用intValue 但是i3是null 会报空指针异常

Integer的面试题

代码 结果

因为是两个对象 所以 == 判断不是一个对象 为false

代码 结果

不难看出第一段只创建了一个对象 两个Integer 引用指向的是同一个对象

-128 到 127 是byte的取值范围 如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取 如果超过了byte取值范围就会在新创建对象

底层实现

Inter 底层源码
IntegerCache实现

assert关键字语法很简单,有两种用法:

如果在low和high之间(-128~127之间) 就从cache数组中取数 否则返回一个新的integer对象

(补充)
assert关键字语法很简单,有两种用法:

1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。

上一篇 下一篇

猜你喜欢

热点阅读