gpt4 book ai didi

java - 使用三元数组对Arrays.asList(T…)的不同行为

转载 作者:行者123 更新时间:2023-12-03 11:17:48 25 4
gpt4 key购买 nike

一位同事在Arrays.asList(T...)中使用三元运算符时遇到了此行为

public static void main(String[] args) throws Exception {              
System.out.println(Arrays.asList(new String[]{"2"}));
System.out.println(Arrays.asList(false? new int []{2} :new String[]{"2"}));
}
第一个输出打印: [2]第二张照片打印: [[Ljava.lang.String;@36baf30c]使用的Java版本是Java 8。
第二个输出与第一个输出的结果不一样吗?

最佳答案

Arrays.asList具有varargs参数,可以通过两种方式调用它:

  • 传递给它某种对象的数组,这些对象成为列表的内容。
  • 您传递了零个或多个对象,它们被放入一个数组中,然后它们成为列表的内容。

  • 您的代码的第一个版本
    Arrays.asList(new String[]{"2"}))
    当您将String数组代替argargs参数传递给 asList时,会被解释为,因此您将获得一个包含该数组内容的String列表,即元素“2”。
    在第二个版本中,表达式的类型
    (false? new int []{2} :new String[]{"2"})
    是Object,因为 int[]String[]没有其他共同的基本类型,并且int数组不能解释为Object数组。
    因此,您的 asList调用可解析为带有一个Object参数的varargs调用。
    这样就为您提供了一个包含一个元素的列表,其中该元素本身就是您的数组。

    关于java - 使用三元数组对Arrays.asList(T…)的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63853993/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com