【java学习】装箱与拆箱、泛型
来源:互联网 发布:b超三个数据看男女技巧 编辑:程序博客网 时间:2024/05/16 11:12
1,拆箱与装箱
1)装箱
把基本数据类型赋给对应的包装类。
比如:把int赋值给Integer,对他的操作就需要用它的方法了。
是值类型转换为引用类型的过程。
2)拆箱
把一个包装类赋给基本数据类型。
由引用类型转换为值类型的过程。
3)demo
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();//拆箱 }
4)频繁的装箱和拆箱很浪费效率
装箱时,生成的是全新的引用对象,这会有时间损耗,效率降低。
在代码中应避免装箱和拆箱的操作。
可以使用泛型来减少这样的操作。
2,引用类型和值类型
1)引用类型:
变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。
2)值类型:
只复制变量的值。也就是基本数据类型(四类八种)
四类:整型、浮点型、字符型、逻辑型。
3,泛型
1)泛型:
用于解决安全问题,是一个安全机制。
2)优点:
a.将运行时期出现问题classCastException,转移到了编译时期。便于解决问题,让运行时间减少,安全。
b.避免了强制转换(显式转换)。
3)举例
list.add("abc");//插入字符串Integer num = (Integer)list.get(0);//运行时会出错,但编码时发现不了
泛型运行程序员在编写集合代码时,限制集合的处理类型,从而在程序编译时就发现问题。如:
list.add("abc");//插入字符串String s = list.get(0);//取出的依然是String,安全
再如带泛型的方法:
public <T> T getA(T a){//此处<T>先声明泛型T,然后使用时,传进来是什么类型,返回什么类型,同样避免了强制转换 return a;}
同样可以有带泛型的类(只作用在非静态成员,静态成员需要单独声明泛型)。
使用注意:
1,泛型类型必须是引用类型
2,<> 念 typeof,表示处理的类型
4)JVM与泛型
所以在创建泛型对象时请指明类型,让编译器尽早的做参数检查,而不是让JVM运行时抛出类不匹配的异常。
不要忽略编译器的警告信息,那意味着潜在的ClassCastException等着你。
①JVM泛型擦除
JVM中没有泛型,只有普通类和普通方法。
所有泛型类的类型参数在编译时都会被擦除,处理成普通类和普通方法。
在编译阶段,所有泛型类的类型参数都会被Object或者它们的限定边界来替换。(类型擦除)
阅读全文
0 0
- 【java学习】装箱与拆箱、泛型
- java学习之拆箱与装箱
- java装箱与拆箱
- Java装箱与拆箱
- JAVA装箱与拆箱
- Java拆箱与装箱
- Java 拆箱与装箱
- java装箱与拆箱
- Java装箱与拆箱
- Java装箱与拆箱
- Java装箱与拆箱
- Java学习笔记之自动装箱与拆箱
- java中自动拆箱与自动装箱学习总结
- Java学习笔记 --- 自动装箱与自动拆箱
- 装箱与拆箱学习笔记
- C#学习笔记,装箱与拆箱
- JAVA学习笔记[1]装箱拆箱
- 【java学习】装箱和拆箱
- maven项目中的报错问题——Dynamic Web Module 3.0 requires Java 1.6 or newer.
- 【动态语言和静态语言的比较】动态or静态?
- thinkphp怎样获取控制器名称和操作名称
- Android-FFmpeg编译生成单一的库
- 第四周项目4
- 【java学习】装箱与拆箱、泛型
- CC2640R2F BLE5.0 建立Source Insight 工程
- JAVA9新特性
- TCP/IP、Http、Socket的区别
- STL中的空间配置器allocator的实现原理及源码剖析
- java线程池
- iOS nomatic strong,weak,retain,assign,copy 等的区别。
- 一个链表中包含环,请找出该链表的环的入口结点
- Multidex详解