Loading... ##包装类与基本数据类型 包装类:可以让基本数据类型获取跟对象一样的属性和特征,行使对象的相关权益 命名:大部分包装类的命名是它的基本类型的名称首字母大写(如float-Float,byte-Byte),但有两个特例,int对应的包装类Integer,以及char对应的包装类Character  ##### 包装类常用方法 包装类都是final修饰的,不能被继承。 所有的数值型包装类(Integer Byte Short Long Float Double )直接父类都是Number类; 字符型和布尔型(Character Boolean)直接父类为Object类; 每个包装类有很多方法,去甲骨文官网去看API  ##### 基本数据类型和包装类之间的转换 1、每一种基本数据类型都应该有对应的对象类型,方便对基本类型进行操作。包装类型可以解决一些 基本类型解决不了的问题,如有时候需要传递一个Object变量 而你想传递int类型的进去显然不行, 这就要用到包装类。 2、集合不允许存放基本类型数据,只能存放包装类型。 3. 装箱:把基本数据类型转换成包装类 (1)自动装箱:不用实例化,直接赋值; ```java int t1=2; Integer t2=t1; ``` (2)手动装箱:实例化,构造函数的方法 ```java int t1=2; Integer t3=new Integer(t1); ``` 4.拆箱:把包装类转换成基本数据类型 (1)自动拆箱: ```java int t4=t2; ``` (2)手动拆箱 ```java int t5=t2.intValue(); ```  ##### 编程练习1 请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和包装类之间的转换。 程序运行参考效果图如下:  ```java package me.feihong.wrap; public class test { public static void main(String[] args) { // TODO Auto-generated method stub // 定义int类型变量,值为100 int score = 100; // 创建Integer包装类对象,表示变量score1的值 Integer score1=score; // 将Integer包装类转换为double类型 double score2=score1.doubleValue(); // 将Integer包装类转换为long类型 long score3=score1.longValue(); // 将Integer包装类转换为int类型 int score4=score1.intValue(); //打印输出 System.out.println("score对应的Integer类型结果为:"+score1); System.out.println("score对应的double类型结果为:"+score2); System.out.println("score对应的long类型结果为:"+score3); System.out.println("重新由Integer转换为int类型的结果为:"+score4); } } ``` ###基本数据类型和字符串之间的转换 ```java //1. 基本数据类型转换为字符串: int t1 = 2; String t2 = Integer.toString(t1); //2. 字符串转化为基本数据类型 int t3 = Integer.parseInt(t2); //或者: int t4 = Integer.valueOf(t2); ```  ##### 编程练习2 请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和包装类之间的转换。 程序运行参考效果图如下:  ```java package me.feihong.wrap; public class TestTwo { public static void main(String[] args) { // TODO Auto-generated method stub double a = 12.5; //将基本类型转换为字符串 String str1 =Double.toString(a)+10; System.out.println("a 转换为String型后+10的结果为: "+str1); String str = "2.8"; // 将字符串转换为基本类型 double b =Double.valueOf(str)+10; System.out.println("str 转换为double型后+10的结果为: "+b); } } ``` ###需要知道的几点知识 1.包装类的默认值是null 在包装类当中实现自动拆装箱背后的秘密: 我们直接给包装类赋值实现自动装箱,实际上编译器是做了这些工作: 1.调用valueOf();方法,在这个方法执行时Java中提供了对象池,如果数据大小在-128--+127之间就可以装进这个池子(很明显这个是个8位缓存器)。 2.当你给包装类赋值时,它会在对象池里先查找存不存在这样的一个对象,如果有,就让现在这个对象也指向这个内存空间,直接产生 3.如果超出范围,或者池子里原来没有相同的对象,编译器就会new开辟一个空间  8种基本数据类型对应的包装类中,Double和Float不具备常量池概念。  ###编程练习3 请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和字符串之间的转换。 程序运行参考效果图如下:  ```java package me.feihong.wrap; public class TestTwo { public static void main(String[] args) { // TODO Auto-generated method stub //定义float类型变量,赋值为88.99 float f1 = (float)88.99; //将基本类型转换为字符串 String str1=Float.toString(f1)+20; //打印输出 System.out.println("f1转换为String型后与整数20求和的结果为:"+str1); //定义String类型变量,赋值为"188.55" String str = "188.55"; // 将字符串转换为基本类型double double t1=Double.valueOf(str)+20; //打印输出 System.out.println("str转换为double型后与整数20的求和结果为:"+t1); } } ```<hr class="content-copyright" style="margin-top:50px" /><blockquote class="content-copyright" style="font-style:normal"><p class="content-copyright">版权属于:Feihong</p><p class="content-copyright">本文链接:<a class="content-copyright" href="https://www.feihong.me/archives/62.html">https://www.feihong.me/archives/62.html</a></p><p class="content-copyright">转载时须注明出处及本声明</p></blockquote> 最后修改:2019 年 12 月 31 日 11 : 42 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付