一 包装类简介
1.包装类的概述
在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象..所有基本类型都有一个与之对应的类,即包装类.
eg:
class A{
public void sum(Object e){
将e当做基本类型对待
还是当做原先的int类型的1对待
} }
ps:
包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值..包装类是final的,不能定义他们的子类。
2.基本类型的包装类及其父类
3.Number及其主要方法
抽象类Number是 Byte,Short,Integer,Long,Float,Double的父类。
Number的子类必须提供将表示的数值转换为 byte,short,int,long,float.double的方法.-doubleValue()以double形式返回指定的数值。
-intValue()以int形式返回指定的数值。
-floatValue()以float形式返回指定的数值。
包装类可以通过对应的方法将自己所表示的值转换成6种基本类型。
eg1:
public
void
test5(){
System.out.println(
"基本数据类型 --> 包装类,调用包装类的构造器"
);
// 自动装箱,直接将'基本数据类型'转化为'包装类',原来需要toString
Integer in1 =
123
;
System.out.println(in1);
// 自动拆箱,直接将'包装类'转化为'基本数据类型',原来需要in2.intValue()
int
int2 = in1;
System.out.println(int2+
1
);
}
eg2:
基本数据类型/包装类 --> String ( valueOf ) && String --> 基本数据类型/包装类 (parseInt)
public void test6(){
int num1 = 10;
//方式1:连接运算
String num2 = num1 +"";
System.out.println(num2+1);
System.out.println("连接运算--上述运行结果为:101");
//方式2:调用String的valueof方法
float f2 = 12.3f;
String str2 = String.valueOf(f2);
System.out.println(str2);
System.out.println("基本数据类型-调用String的valueof方法-上述运行结果为:12.3");
Double d1 = 12.5;
String str3 = String.valueOf(d1);
System.out.println(str3);
System.out.println("引用类型-调用String的valueof方法-上述运行结果为:12.5");
// String类型转换成基本数据类型
String str4 = "123";
System.out.println(Integer.parseInt(str4));
System.out.println("string类型转换成基本数据类型");
}
二 自动拆箱与自动装箱
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型byte, short, char, int, long, float, double 和 boolean 对应的封装类为Byte, Short, Character, Integer, Long, Float, Double, Boolean。
从Java5.o版本以后加入了autoboxing.功能,自定”拆箱"和"装箱”是依靠JDK5的编译器在编译器的”预处理”工作。下列代码写法均为正确形式:
lnteger a =100; //装箱
lnteger b = 200; //装箱
lnteger c = atb;//先拆箱后装箱double d= c;//拆箱
思考? 一个基本类型是否可以转换成任意包装类型?
可以的,可能会造成精度损失和溢出。
三 Integer类