包装类

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

  • 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用操作

  • 用于基本数据类型与自负串之间的转换

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

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

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

将int 转String

  • 用 + 拼接"" 和 int 数 (常用)
  • String.valueof(100);
  • int 转成integer integer.toString
  • Integer.toString(int i)(integer中的静态方法)

String 转int

  • String -> Integer -> int
    第一步用Integer的构造
    第二部Integer.parseInt

(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,并终止执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容