java把大数据类型的包装类
1.八种基本类型的包装类
都用final修饰,最终类,不可被继承。
2.引入
在解决实际问题中,由于基本数据类型不是对象,所以处理起来比较困难,所以将其包装起来,包装成对象,先创建一个基本类型的类。
其实在java.lang 包(不需要导入)中存在八中数据类型的包装类。
3.封箱与拆箱
封箱:将一个基本数据类型的值 转换为对应的包装类的对象
方法一:Integer num1=new Integer(17);
方法二:Integer num2=Integer.valueOf(17); //推荐使用,带有缓存,速度快
拆箱:把包装类的对象,转换为对应的基本数据类型的值
int num3=num1.intValue();
在java5后提供了自动装箱和拆箱的操作
eg: Integer num1=17;
int num2=num1;
这是一个语法糖,在底层仍然是手动装箱和拆箱操作(装箱时用的是Integer.valueOf(17);方式)
联想:switch 支持byte,char int short 数据类型,现在也支持这四种对应的包装类
4.包装类的使用
4.1包装类中的常量
MAX_VALUE /MIN_VALUE :该类型的最大值,最小值
SIZE 该数据类型的位数(一个字节8位)
TYPE 该数据类型对应的基本数据类型
4.1包装类的构造器(2种)以Integer为例
作用:创建包装类的对象
Integer(int num){}
Integer( String num) {} //chatacter除外,只能包含一个字符
4.2基本类型和包装类型对象的转换
基本类型->包装类型对象:装箱
Integer num=Integer.valueOf(17).;
包装类型对象->基本类型:拆箱
6个数类型的转换:byte,int,short,long,double,float;
在基本类型中有这6个继承于Number的转换方法:intValue(), byteValue(),
shortValue(), longValue(), doubleValue() ,floatValue().
4.String和基本数据 /包装类型的转换
String->包装类型对象
方式一:Integer num1=Integer.valueOf("12324");
方式二:Integer num1=new Integer("12324");
注意:传递的字符串必须是数字
如果是Boolean类型的,对于传入的字符串,底层只认 “ture” ,"TURE" ,其余传入的任何字符串都为false
包装类型对象->String
String str=任何对象 . toString();
基本类型->String
String str=17+" "; //任何数据与字符串连接都是字符串;
String=String.valueOf(int 17);
String->基本类型
基本类型对应的包装类中的方法parseXxx()
int num=Integer.parseInt(str);
5.包装类中的缓存设计
在底层,如果进行手动装箱
Byte,Short,Long,Integer :-127_128
Charactar: 0_127
所以在缓存区间内的比较才是比较其数值,而不是地址,如果超过范围,则比较地址。
为了保证比较值而不比较地址,所以用Object中的equals()方法(其原始意义也是比较地址),官方建议,子类必须重写equals()方法,比较我们想比较的数值,所以在包装类中的equals()方法,比较的是包装的数据
结论:包装类型的数据通通用equals()方法进行比较。
6.Integer优于int的地方
默认值
.Integer:null ; int: 0;
在集合框架中,只能存在对象类型,不存在基本类型
方法中的基本变量主要存在于栈中,包装类型,存在于堆中。且八大包装类型都是由final修饰
谢谢阅读!