Java基础—包装类.docx

上传人:A*** 文档编号:142725032 上传时间:2020-08-22 格式:DOCX 页数:8 大小:14.53KB
返回 下载 相关 举报
Java基础—包装类.docx_第1页
第1页 / 共8页
Java基础—包装类.docx_第2页
第2页 / 共8页
Java基础—包装类.docx_第3页
第3页 / 共8页
Java基础—包装类.docx_第4页
第4页 / 共8页
Java基础—包装类.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Java基础—包装类.docx》由会员分享,可在线阅读,更多相关《Java基础—包装类.docx(8页珍藏版)》请在金锄头文库上搜索。

1、Java基础包装类包装类 Wrapper基础数据类型与包装类问题:既然有了基础数据类型,那为什么还需要包装类呢?基础数据类型不是对象,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,让基本数据类型的变量具有类中对象的特征,java提供了包装类。包装类就是对基本数据类型进行包装(强化), 将其包装成一个类, 使用类中的方法可以对包装类对象进行更方便的操作.包装类的特性基本数据类型对应包装类intIntegercharCharacterbyteByteshortShortlongLongbooleanBooleanfloatFloatdoubleDouble包装类的直接父类: Number:

2、数值型包装类的直接父类 Object:剩余两个的直接父类*包装类都被 final 修饰:不能被继承*基本数据类型和String类型的相互转换1.字符串转换成基本数据类型 通过包装类的构造器实现:int i = new Integer(“12”); 通过包装类的parseXxx(String s)静态方法:Float f = Float.parseFloat(“12.1”);2.基本数据类型转换成字符串 调用字符串重载的valueOf()方法:String fstr = String.valueOf(2.34f); 直接使用空字符串拼接:String intStr = 5 + “”以Intege

3、r为例: int intValue() - 将引用数据类型的Integer对象, 转换回基本数据类型手动拆箱 static Integer valueOf(int i) - 返回一个表示指定的 int 值的 Integer 实例手动装箱 static int parseInt(String s) - 将数字字符串转换为数字重点掌握 int num = Integer.parseInt(“123”); static String toString() - 将Integer对象, 转换成字符串.int - StringA. 推荐: 使用字符串的+拼接 举例: - 100 + B. 不推荐: 将in

4、t - Integer - toString() 举例: Integer i = new Integer(100); i.toString();String intA. 推荐: 使用Integer.parseInt(123); 举例: Integer.parseInt(123);B. 不推荐: 将字符串封装成Integer - 调用intValue(); 举例: Integer i = new Integer(123); i.intValue();JDK5的新特性:自动装箱 和 自动拆箱1.自动装箱:把基本数据类型转换为对应的包装类类型 方法:将基本数据类型, 直接赋值给包装类对象的引用; 原

5、理:底层是通过对应的valueOf和有参构造配合使用的 1)当数值在-128到127之间(一个字节)则直接返回底层缓存的引用 2)否则,在堆中new一个新的对象返回该对象的引用public static Integer valueOf(int i) if (i = IntegerCache.low & i = IntegerCache.high) return IntegerCache.cachei + (-IntegerCache.low); return new Integer(i);2.自动拆箱:把包装类类型转换为对应的基本数据类型 方法:可以将包装类Integer对象, 直接赋值给in

6、t数据类型; 原理:底层会自动帮我们调用对应的方法:如 Integer 的 int intValue() 应用:赋值时、= 判断时、算术运算 时 都会自动拆箱public int intValue() return value;3.结论: 自动拆装箱, 可以实现的效果是基本数据类型和引用数据类型的变量随意互换.Integer i = 100;Integer i2 = new Integer(100);int num = i2;注意: 自动拆装箱, 只针对于基本数据类型和包装类.4.手动装箱: 手动的将基本数据类型, 包装成包装类对象int num = 10;Integer i = new In

7、teger(num);5.手动拆箱: 手动的将Integer对象转换为int整数Integer i = new Integer(100);int num = i.intValue();部分包装类的Cach缓存1.整数型包装类 1)使用new 方法实例化对象时,采用构造器在堆中开辟空间,存储该包装类对象; 2)使用自动拆箱创建对象时,【默认】调用包装类的静态方法 valueOf() 进行对象的初始化; 1)valueOf()会判断是否在byte存储范围内,来判断引用指向是否为底层缓存地址 2)valueOf()有两种参数传递类型:int StringInteger i = 5; /等价于: In

8、terger i = Interger.valueOf(5);1)自动装箱:代码默认执行对应包装类的valueOf()方法static Integer valueOf()2)自动拆箱:代码执行过程byte byteValue() 以 byte 类型返回该 Integer 的值2.布尔类型的包装类1)布尔值:只认true 与 false2)布尔类型的包装类:只要不是“true”,就是false3)注意:Boolean x = new Boolean(true);Boolean y = new Boolean(true);System.out.println(x = y); /falseBoole

9、an x1 = true;Boolean y1 = true;System.out.println(x1 = y1); /ture原理:自动装箱时使用了静态常量 1)被final修饰 2)构造器初始化:在堆中开辟空间,并初始化public Boolean(boolean value) this.value = value; 3)自动装箱:valueOf()public static Boolean valueOf(boolean b) return (b ? TRUE : FALSE); 4)其中 TRUE 与 FALSE 是静态常量:其值在方法区唯一public static final B

10、oolean TRUE = new Boolean(true);public static final Boolean FALSE = new Boolean(false);3.Character包装类自动装箱:valueOf(char c)public static Character valueOf(char c) if (c = 127) / must cache return CharacterCache.cache(int)c; return new Character(c);CharacterCache静态内部类: 类加载时,ASCII字符集中 0 到 127 对应字符,自动加载到

11、堆中,且空间唯一;private static class CharacterCache private CharacterCache() static final Character cache = new Character127 + 1; static for (int i = 0; i 1.0public static void main(String args) char x = x; int i = 10; System.out.println(true? x : i); /120 System.out.println(true? x : 10); /x 2)包装类会自动拆箱Object o1 = true? new Integer(1)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号