自动装箱
类型包装器:在一个对象内部封装一个基本类型的类。
类型包装器产生原因:首先 使用基本数据类型而不是对象来处理是出于性能方面的考虑。但是 基本数据类型不属于对象体系的一部分,也不能继承object类。
但有时还需要对象表示。不能通过引用一个基本类型传递给一个方法。 而且 java中使用的许多标准的数据结构都是操作对象的 这意味着数据结构不能储存基本类型的类 为了处理这些情况 java提供了 类型包装器(type_ wrapper)
包装器有:
Character char的包装器
Boolean 封装布尔值的包装器
数字包装器 都继承与抽象类number
所有的包装器都重写了 tostring()方法
装箱(boxing):将一个值封装进一个对象的过程。
比如: Integer iob=new Integer(100);
拆箱(unboxing):从一个类型包装器中提取值的过程。
比如:int i=iob.intValue();//在自动jdk1.5之后出现自动装箱淘汰。
自动装箱(outoboxing)
java 会为你自动构造一个对象
Integer iob=100;//没有new来显示建立。
自动拆箱(auto-unboxing)
int i=iob;
自动装箱和自动拆箱会自动运行
可以运行在方法里
static int m(Integer v)
return v; //auto-unbox to int;
和表达式
Integer iob;
iob=100;
++iob; //autoboxing iob被拆箱 值递增 然后结果被重新装箱
自动装箱允许在一个表达式里混用不同类型的数字型对象一旦被拆箱 就会用标准的类型提示和转换
Integer iob=100;
Double dob=98.6
Dob=dob+iob; //dob=198.6
自动装拆箱有助于防止错误
Integer iob=100;
int I =iob.byteValue //I=-24;
通过调用byteValue()手动拆箱 使存储在iob中的值1000被截取,得到垃圾数据-
自动装拆箱可以防止这一类错误
警告 java可以自动装拆箱所以一些人只使用
对象,而将基本数据类型全盘抛弃
完全是对自动装拆箱的误用 合理使用才会增加效率。自动装箱会额外增加系统负担 基本类型不会。