Java中包装类Wrapper的使用
1. 让基本数据类型也有类的特征(封装在类中)
(红字是包装类名字与基本数据类型有区别) 它们的父类都为Number
基本类型、包装类、String类之间的相互转换
2. 基本数据类型转换为包装类:调用包装类的构造器
public class WrapperTest {
//基本数据类型--->包装类:调用包装类的构造器
@Test
public void test1(){
int num1 = 10;
//System.out.print1n(num1.toString());
Integer in1 = new Integer(num1);
System.out.print1n(in1.toString());
Integer in2 = new Integer("123");
System.out.println(in2.toString());
调用Integer中的构造器,其中存在两个构造器 Integer(int value)
Integer(String s)
但是第二个String中只能放入数字。
//报异常
//
Integer in3 = new Integer("123abc");
//System.out.print1n(in3.toString());
Float f1 = new Float(12.3f);
Float f2 = new Float("12. 3");
System.out.print1n(f1); // 12.3
System.out.println(f2); // 12.3
2.1 boolean类型需要注意!
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("TrUe");
System.out.print1n(b2);//true
Boolean b3 = new Boolean("true123");
System.out.print1n(b3);//false
其中boolean的源码如下:
equalsIgnoreCase()
忽略大小写,只要是true就行
Order order = new Order();
System.out.println(order.isMale);//false
System.out.print1n(order.isFemale);//nu11
}
}
class Order{
boolean isMale;
Boolean isFemale; //这里是Boolean类
{
因为现在isFemale
前是用类定义了,引用数据类型,初始值为null
基本数据类型boolean
初始化值为false
3. 包装类转换为基本数据类型: 调用包装类xxx的xxxValue( )
Integer in1 = new Integer(12);
int il = in1.intValue();
System.out.println(i1 + 1);//输出13 ,可以做运算
Float f1= new Float(12.3);
f1.floatValue();
.intValue()
.floatValue()
4. 新特性: 自动装箱、自动拆箱
4.1 自动装箱:基本数据类型→包装类
public void test3(){
int num1=10;
//基本数据类型-->包装类的对象
method(num1); // 输出为10
}
public void method(object obj){
System.out.print1n(obj);
}
上例中,int 是基本数据类型,而在method方法中参数为Object类,而int与Object并无关系,如何实现?
-
基本数据类型与Object类确实没有关系
-
但是基本数据类型存在包装类 上面int的包装类似Integer, Integer是Object的类 →通过自动装箱实现:
int num2=10; Integer in1=num2;//自动装箱
-
这样就可以实现method方法
-
其他也一样
int num2=10;Integer in1=num2;//自动装箱
4.2 自动拆箱: 包装类→基本数据类型
int num3=in1;
5. 基本数据类型、包装类 →String类型: 调用String重载的valueOf(Xxx xxx)
int num1=10;
//方式1:连接运算
String str1 = num1 + ""; //输出为String类型
//方式2:调用String的valueOf(Xxx xxx)
float f1=12.3f;
String str2 = String.valueOf(f1);//"12.3"
Double d1 = new Double(12.4);
String str3=String.valueof(d1); //选择适当的参数类型,如下图
System.out.print1n(str2);
System.out.print1n(str3);//"12.4"
6. String类型 → 基本数据类型、包装类:调用包装类的Xxx(包装类).parseXxx(数据类型)()
String str1 ="123";
//错误的情况:
//int num1= (int)str1; 不能强转
//Integer in1 = (Integer)str1; integer 和 str1的类型没有子父类的关系
int num2 = Integer.parseInt(str1);
System.out.println(num2 + 1);//输出124
Integer.parseInt()
Boolean.parseboolean()
boolean类型比较特殊, 字符串参数只有完全为true时才返回true,否则返回false
String str2="true1";
boolean b1 = Boolean.parseBooLean(str2);
System.out.println(b1);//false