Java包装类

导读:本篇文章讲解 Java包装类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

        包装类(Wrapper Class): Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。

包装类与基本数据类型

Java包装类 

        基本数据类型没有属性和方法,无法对象化进行交互,包装类的产生就是为了解决基本数据类型存在的这样的一些问题,通过包装类可以让基本数据类型获取对象一样的特征,行使对象的相关权益。包装类与基本数据类型的对应关系如下。

Java包装类

 

基本数据类型和字符串之间的转换

基本数据类型转换为字符串

//通过包装的toString方法转换为字符串
int t1=2;
String t2=Integer.toString(t1);
//测试
System.out.prin+1n("int类型转换为String类型对象t2=="+t2) ;

字符串转换为基本数据类型

//1.包装类的parse方法
int t3-Integer.parseInt(t2);
//2、包装类的value0f先将字符串转换为包装类,再通过自动拆箱完成基本类型转换
int t4=Integer.value0f(t2);
//测试
System.out.println("String类型转换为int类型变量t3="+t3);
System.out.println("String类型转换为int类型变量t4="+t4); 

基本数据类型和包装类之间的转换

        在Java当中,把基本数据类型的值转换成对应包装类的对象,而拆箱则是装箱的逆操作,也就是把包装类的对象转换成它对应的基本数据类型的值。 无论是装箱还是拆箱,都有自动和手动的两种行为。

//装箱:把基本数据类型转换成包装类
//1、自动装箱
int t1=2;
Integer t2-t1 ;
//2、手动装箱
Integer t3=new Integer(t1);
//测试
System.out.println("int类型变量t1="+t1);
System.out.println("Integer类型对象t2="+t2);
Sys tem.out.println("Integer类型对象t3="+t3);
//拆箱:把包装类转换成基本数据类型
//1、自动拆箱
int t4=t2;
//2、手动拆箱
int t5=t2.intValue();
//测试
System.out.println("Integer类型对象t2- "+t2);
System.out.println("自动拆箱后,int类型变量t4="+t4);
System.out.println("手动拆箱后,int类型变量t5="+t5);

包装类对象间的比较

Integer one= new Integer(100);
Integer two=new Integer(100);
//one和two是两个不同的对象,他们指向的是两个不同的空间
System.out.println("one== two的结果: "+(one==two)); //false
Integer three=100;//自动装箱操作       three==100为自动拆箱操作
//Integer three Integer.ValueOf(100) ;
System.out.printIn("three==100的结果: "+(three==100)); //true
Integer four= 100;
System.out.println(" three==four的结果: " + (three==four)); //true
​
Integer five= 200;
System.outprintn(" five== 200的结果: " +(five==200)); //true
​
Integer six= 200;
System.out.println(" five== six的结果: "+(five==six)); //false

        实际上JAVA在执行自动拆装箱操作的时候,它的核心完成的就是这样的一个ValueOf方法,JAVA为了提高运行的效率,在这个方法执行的过程当中,它提供了一个类似于常量数组的这样的一个缓存区,在很多资料里面称之为叫对象池,当这个方法在执行的过程当中呢,如果传进来的这个参数他是小于127,大于-128在这个范围内的时候,会直接从这个缓存当中去查找是否存在这样的一个对象,如果有这样的一个对象将会直接产生,如果没有,就会通过隐式的调用一个new关键字去实例化一个Integer类型的对象。所以three和four指向的是缓存区同一块空间,而five和six指向的是缓存区不同空间。

Double类型和Float类型是不具备常量池这个概念的,这是两个特例。

Java包装类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99486.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!