一、包装类分类
Java有八种基本数据类型:byte、short、int、long、float、double、boolean、char
Java为其提供了8种对应的包装类:Byte、Short、Integer、Long、Float、Double、Boolean、Character
Integer num = new Integer(0); //创建一个数值为0的Integer对象
二、使用包装类的原因
Java语言是面向对象的编程语言,而基本数据类型声明的变量并不是对象,为其提供包装类,增强了Java面向对象的性质。
而且,如果只有基本数据类型,使用时是很不方便的,比如,在集合类中,无法将int 、double等类型放进去的,因为集合的容器要求元素是Object类型。
此外,包装类还为基本类型添加了属性和方法,丰富了基本类型的操作。如当我们想知道int取值范围的最小值,我们需要通过运算,如下面所示,但是有了包装类,我们可以直接使用Integer.MAX_VALUE即可。
//求int的最大值
int max = 0;
int flag = 1;
for (int i=0; i<31; i++) {
max += flag;
flag = flag << 1;
}
System.out.println(max +" "+ Integer.MAX_VALUE); //2147483647 2147483647
为什么要保留基本数据类型?
因为Java种创建的对象都是存储在堆里的,使用的时候需要通过栈中的引用,所以常用的基本数据类型,不需要使用new在堆上创建,而是直接在栈内存中存储不创建对象,就会比较高效。
三、包装类的自动拆装箱机
进行基本类型数据和包装类对象之间的互转时:
//创建包装类对象有两种方式:new关键字、valueOf()方法。
Integer num1 = new Integer(1); //基本数据类型转为包装类
Integer integer = Integer.valueOf(10);//基本数据类型转为包装类
int num2 = num1.intValue(); //包装类型转为基本数据类型
System.out.println(num1 +" "+ num2);
为了方便使用和性能优化,提供了自动拆装箱机制
//1、包装类中的自动装箱拆箱机制
Integer num1 = 1; //自动装箱
int num2 = num1; //自动拆箱
System.out.println(num1 +" "+ num2);
new出来的对象是在堆中开辟了新地址,所以地址不相同,而根据源码分析valueOf创建的对象在-128~127时是有一个cache数组存储的,也就是我们常说的128陷阱.
今天的文章Java的包装类_包装的分类有哪四类「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/74963.html