【java学习】装箱和拆箱

来源:互联网 发布:真三国无双7mac版下载 编辑:程序博客网 时间:2024/04/29 17:31

【何谓装箱拆箱?】

 1)装箱:

   把基本数据类型赋给对应的包装类。
   比如:把int赋值给Integer,对他的操作就需要用它的方法了。
   是值类型转换为引用类型的过程。

 2)拆箱:

   把一个包装类赋给基本数据类型。
   由引用类型转换为值类型的过程。
                                Integer i = 1;//装箱int j = i;//拆箱//典型应用List list = new ArrayList();list.add(1);//装箱list.add(new Integer(1));//没有引入装箱概念之前Iterator it = list.iterator();while (it.hasNext()) {int x = (Integer)it.next();//拆箱}

什么是引用类型和值类型?】

    1)引用类型:

   变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。

 2)值类型:

   只复制变量的值。也就是基本数据类型(四类八种):四类:整型、浮点型、字符型、逻辑型。

【频繁的装箱和拆箱很浪费效率。为何?】

  装箱时,生成的是全新的引用对象,这会有时间损耗,效率降低。

在代码中应避免装箱和拆箱的操作。可以使用泛型来减少这样的操作。

【什么是泛型?】

1)泛型:

  用于解决安全问题,是一个安全机制。

2)优点:

  a.将运行时期出现问题classCastException,转移到了编译时期。便于解决问题,让运行时间减少,安全。

  b.避免了强制转换(显式转换)。

3)举例

<span style="font-size:14px;">    list.add("abc");//插入字符串    Integer num = (Integer)list.get(0);//运行时会出错,但编码时发现不了</span>

       泛型运行程序员在编写集合代码时,限制集合的处理类型,从而在程序编译时就发现问题。如:
<span style="font-size:14px;">list.add("abc");//插入字符串</span>
<span style="font-size:14px;">String s = list.get(0);//取出的依然是String,安全</span>
       

再如 带泛型的方法:

<span style="font-size:14px;">     public <T> T getA(T a){//此处<T>先声明泛型T,然后使用时,传进来是什么类型,返回什么类型,同样避免了强制转换          return a;     }</span>

    同样可以有带泛型的类(只作用在非静态成员,静态成员需要单独声明泛型)。

使用注意:

  1,泛型类型必须是引用类型

  2,<> 念 typeof,表示处理的类型




0 0
原创粉丝点击