new ArrayList()和Arrays.asList()的底层源码区别
1. 首先 Arrays.asList()创造的对象不可添加数据(注意)
提示:Arrays.asList()会返回一个 ArrayList<>()对象,但这个对象的路径是在java.util.Arrays.ArrayList,而不是我们熟悉的java.util.ArrayList下的ArrayList;
为什么Arrays.asList()创造出来的List不可添加数据?
我们知道,List的底层是一个数组,而Arrays.asList()生成的数据的定义是
private final E[] a;
用了final修饰,所以不能修改,而java.util包下,也就是常用的new ArrayList()生成的List底层数组是
transient Object[] elementData;
是可以编辑的, transient关键字的作用是让【这个属性不用序列化】,我们知道实现了Serilizable接口的类就可以被序列化,但我们如果想让这个对象的某个属性不用序列化,就可以用transient声明