橘子味的心
标题:Java包装类

java中的包装类提供了将原始数据类型转换为对象,以及将对象转换为原始数据类型的机制。

自J2SE 5.0以来,自动装箱和取消装箱功能将原始对象和对象自动转换为原始数据类型。将原始数据类型自动转换为对象称为自动装箱,反之亦然。

java.lang包的八个类在java中称为包装类。八个包装类的列表如下:

基本类型 包装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

为什么需要包装类?

将原始类型和包装类分开以保持简单是一个明智的做法。当需要一个适合像面向对象编程的类型时就需要包装类。当希望数据类型变得简单时就使用原始类型。

原始类型不能为null,但包装类可以为null。包装类可用于实现多态性。

下面是一个简单的程序,显示了java中包装类的不同方面应用。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class WrapperClasses {
  5.  
  6. private static void doSomething(Object obj){
  7.  
  8. }
  9.  
  10. public static void main(String args[]){
  11. int i = 10;
  12. char c = 'a';
  13.  
  14. // 原始数据很容易使用
  15. int j = i+3;
  16.  
  17. // 由包装类实现的多态性,不能在这里传递原始数据
  18. doSomething(new Character(c));
  19.  
  20. List<Integer> list = new ArrayList<Integer>();
  21. // 包装类可以在集合中使用
  22. Integer in = new Integer(i);
  23. list.add(in);
  24.  
  25. // 自动装箱负责原始到包装器类的转换
  26. list.add(j);
  27.  
  28. //包装类可以为 null
  29. in = null;
  30. }
  31. }
  32. Java

包装类示例:原始类型到包装类型

  1. public class WrapperExample1 {
  2. public static void main(String args[]) {
  3. // Converting int into Integer
  4. int a = 20;
  5. Integer i = Integer.valueOf(a);// converting int into Integer
  6. Integer j = a;// autoboxing, now compiler will write Integer.valueOf(a)
  7. // internally
  8.  
  9. System.out.println(a + " " + i + " " + j);
  10. }
  11. }
  12. Java

输出结果 -

包装类示例:包装类型到原始类型

  1. public class WrapperExample2 {
  2. public static void main(String args[]) {
  3. // Converting Integer to int
  4. Integer a = new Integer(3);
  5. int i = a.intValue();// converting Integer to int
  6. int j = a;// unboxing, now compiler will write a.intValue() internally
  7.  
  8. System.out.println(a + " " + i + " " + j);
  9. }
  10. }
  11. Java

输出结果 -