求着两道题的区别,我想知道为什么

分析以下代码:
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)要求数组元素是对象。

分析以下代码:
double[] array = {1, 2, 3};
ArrayList list = new ArrayList<>(Arrays.asList(array));
System.out.println(list);

A.代码正确并显示[1,2,4]。
B.代码正确并显示[1.0、2.0、3.1]。

C.代码有编译错误,因为像2这样的整数会自动转换为整数对象,但数组元素类型是Double。
D.代码有编译错误,因为asList(array)要求数组元素是对象。

选择C
正确写法

double[] array = {(double)1, (double)2, (double)3};
ArrayList<Double> list = new ArrayList<>(Arrays.asList(array));
System.out.println(list);

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    代码1和代码2的区别在于数组中的元素类型和asList()方法对类型的要求。

    代码1中的数组元素类型为Double,但选项A却显示了整数数组。这是因为asList()方法会将整数自动转换为整数对象,而不是将其作为基本类型的数组元素。由于数组元素类型是Double,与转换后的整数对象类型不匹配,会导致编译错误。

    代码2中同样存在类似的问题。数组元素类型为Double,但选项A却显示了包含不同元素的数组。同样是由于asList()方法将整数自动转换为整数对象,而数组元素类型是Double,导致类型不匹配,出现编译错误。

    解决这个问题的方法是使用包装类型的数组作为参数调用asList()方法。例如,可以使用Double类型的数组来替代代码中的整数数组作为参数。这样就可以避免编译错误。例如:

    Double[] array = {1.0, 2.0, 3.0};
    List<Double> list = Arrays.asList(array);
    

    希望这样的解释对您有所帮助。如果您有任何其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^