java编程思想读书笔记——第16章数组

java编程思想读书笔记——第16章数组

16.1~16.5
数组与其他种类容器的区别有三方面:效率 类型 和保存基本类型的能力
在java中数组是一种效率最高的存储和随机访问对象引用序列的方式
他是一个简单的线性序列 访问十分迅速 但是为了这种速度使之他的大小是固定的
ArrayList 可以进行动态扩容 是运用了 当前数组满了 创建一个新数组 把该数组的内容
一个一个复制到新数组当中 这相当的耗费性能所以比 普通数组效率低很多。

在泛型之前 数组之所以优于容器 是因为 数组可以承载具体的类型,这意味着可以通过编译器检查 来发现你的错误 而容器类只能承载Object

自从有了泛型 和自动拆装箱机制 容器就可以 承载具体的类型 接受编译器的检查 还可以承载基本类型 这使得 数组仅存的优点 只有效率 容器还具有更多的功能

数组与泛型不能很好的结合,你不能实例化具有参数化类型的数组比如

 Peel[] peels = new Peel();
    
 泛型擦出会移除参数类型信息,而数组必须知道他们所持有的类型,以强制保证类型的安全
 虽然不能实例化 但是却可以创建这个引用:

 List[] list;

这段代码不会发生任何错误,而且你可以创建非泛型的数组然后将其转型

 list = (List[])new List[]();

一旦拥有了对List[]的引用,你就会看到你将得到某些编译器检查

 list[0] = new ArrayList(); //OK
 list[1] = new ArrayList();//报错

如果你想避免编译器或运行错误你可以将list赋值给Object

Object[] objects = list;

你可能感兴趣的:(读书笔记)