Java的面向对象
14-包装类与自动装箱和自动拆箱
2021-07-06 667 1
简介 基本数据类型,不能创建对象, 有了包装类,真正实现了面向对象。
1. 包装类
我们知道,Java中的8种基本的数据类型跟Object类没有面向对象层面的关系,而Java又是面向对象的语言,让人感觉基本数据类型与Java语言“脱节”了。
于是乎,针对八种基本数据类型定义相应的引用类型—包装类(封装类),将基本数据类型封装到类中,希望基本的数据类型也有类的一些特征,真正的让Java语言实现纯面向对象的语言。有了类的特点以后,就可以调用类中的方法,真正地实现了面向对象
2. 基本数据类型转换为包装类
基本数据类型 ->包装类:调用包装类的构造器
//TestWrapper.java package com.ylaihui.oop9; import org.junit.Test; public class TestWrapper { @Test public void test1(){ int num = 123; Integer i = new Integer(num); System.out.println(i.toString()); Integer i2 = new Integer("123"); System.out.println(i2.toString()); // Integer i3 = new Integer("123a"); // System.out.println(i3.toString()); Boolean b1 = new Boolean("true11"); System.out.println(b1); } }
3. 包装类转换为基本数据类型
包装类->基本数据类型:调用包装类Xxx的xxxValue()
//TestWrapperToBase.java package com.ylaihui.oop9; import org.junit.Test; public class TestWrapperToBase { // 包装类->基本数据类型:调用包装类Xxx的xxxValue() @Test public void test1(){ Integer i1 = new Integer(12); System.out.println(i1 + 1); int intv = i1.intValue(); System.out.println(intv); Double d1 = new Double(12.33); System.out.println(d1); double dd = d1.doubleValue(); System.out.println(dd); // ... } }
4. 自动装箱和自动拆箱
JDK 5.0 新特性:自动装箱 与自动拆箱
//AutoBaseTrans.java package com.ylaihui.oop9; import org.junit.Test; public class AutoBaseTrans { @Test public void test1(){ // 自动装箱 基本数据类型自动转换为包装类 int num1 = 12; Integer i1 = num1; double db = 12.33; Double d1 = db; // 自动拆箱 包装类自动转换为基本数据类型 int num2 = i1; double db1 = d1; } }
5. 包装类(基本数据类型)到String的相互转换
基本数据类型、包装类->String类型:调用String重载的valueOf(Xxx xxx),记忆为格式化输出到特定格式的字符串。
String类型 --->基本数据类型、包装类:调用包装类的parseXxx(String s),记忆为字符串解析。
转换成谁,就调用谁的方法
//WrapperToString.java package com.ylaihui.oop9; import org.junit.Test; public class WrapperToString { // String类型 --->基本数据类型、包装类:调用包装类的parseXxx(String s) @Test public void test2(){ String st1 = "123"; Integer i1 = Integer.parseInt(st1); System.out.println(i1); boolean b = Boolean.parseBoolean("true"); System.out.println(b); double d1 = Double.parseDouble("12.3"); System.out.println(d1); } //基本数据类型、包装类--->String类型:调用String重载的valueOf(Xxx xxx) @Test public void test1(){ int num = 11; // 字符串连接符转换 String str1 = num + ""; // 调用String的valueOf(Xxx xxx) Integer i = new Integer(11); String str2 = String.valueOf(i); String str3 = String.valueOf(11); System.out.println(str1); System.out.println(str2); System.out.println(str3); } }