包装类
实质
基本数据类型对应的引用数据类型
把基本数据类型变成对象
创建对象后
在栈内存里开辟空间
在堆内存里开辟空间
成员变量记录数值
栈内存记录对象的地址
包装类就是创建一个对象,对象记录相应的数据值
用一个对象把数据包装起来
作用
Java中万物皆是对象
因为多态的存在
所有的数据都可以用object类来进行表示
但是有局限性 比如传递一个整数
而集合当中只能存入对象,不能存入基本数据类型
常见的包装类
Integer
获取Integer对象的方式(了解)
JDK5以前
利用构造方法
利用静态方法
打印的整数均是十进制
面试题
两种方式获得对象区别
==号比较对象时比较的地址值
表示是不是同一个对象
new关键字
创建新的对象
每个对象的地址值不同
源码
方法参数i是我们传入的整数
如果i在一定范围内
就直接获取
不然创建对象
cahe[]是一个数组
数组中获取对象 可以 -128到127
Integer类源码 中 静态代码块
提前创建对象 放到数据中
所以当使用valuOf创建对象
如果存在 直接返回数组中创建好的
超出范围,每次都是创建对象出来的
因为
-128-127中的使用次数比较多
如果每次都要创建对象
就太麻烦
就创建对象
用到的话就不会创建新的对象,直接返回创建好的对象
计算
以前的方法
对象之间不能直接运算
要把对象进行拆箱
变成基本数据类型
然后进行运算操作
再进行装箱 变回包装类
但是太复杂了
自动装箱拆箱
JDK5提出机制
自动 不需要我们额外去写代码
可以把基本数据类型变成其对应的包装类
可以把包装类自动变成其基本的数据类型
在底层,还会自动调用静态方法valueof得到一个Integer对象,只不过不需要我们去操作
小结
Integer成员方法
得到对应的进制数
返回值是字符串
因为长度限制
二进制可能是十多位,二十多位
把整数转换成二进制,八进制,十六进制
大量使用
Java是强类型的
每种数据都有一种数据类型
把字符串转化成整数
细节1
转换时 传入的参数 字符串的组成只能是数字
细节2
8种包装类当中
除了Character都有对应的parseXxx方法
进行类型转换
以后所有的数据类型统一用nextLine
类型转换
综合练习
两道综合练习
先把数据录入内存中
再ctrl+v进行转换
题目1
题目2
我们在开发时习惯把异常数据先过滤
类型转换
通过ACILL码值转换
-‘ 0 ’ 对应的数值为48
这一步骤尤为重要
字符串转化为数字
先得到每个字符
然后转化为整数
三道综合练习
题目1
把十进制转换成二进制
除基取余法
题目2(重要)
题目3(重要)