分析以下代码:
Double[] array = {1, 2, 3};
ArrayList list = new ArrayList<>(Arrays.asList(array));
System.out.println(list);
A.代码正确并显示[1,2,3]。
B.代码正确并显示[1.0、2.0、3.0]。
C.代码有编译错误,因为像1这样的整数会自动转换为整数对象,但数组元素类型是Double。
D.代码有编译错误,因为asList(array)要求数组元素是对象。
我不知道选什么
选择C,Double[] array = {1, 2, 3};这里整数不能直接转换double
选c
因为Double类型数组赋的值为int类型 1,2,3
int类型1,2,3 会自动转型为double,但是不能自动转型为Double
因为Double是double的包装类
而int,double属于java基本数据类型
你知道吗?
那这到底为什么呢,因为Arrays.asList构建出来的List与new ArrayList得到的List,压根就不是一个List!类关系图如下;
从以上的类图关系可以看到;
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
此外,Arrays是一个工具包,里面还有一些非常好用的方法,例如;二分查找Arrays.binarySearch
、排序Arrays.sort
等