Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当参数不变时,Java或JIT编译器是否会优化Arrays.asList?_Java_Jit - Fatal编程技术网

当参数不变时,Java或JIT编译器是否会优化Arrays.asList?

当参数不变时,Java或JIT编译器是否会优化Arrays.asList?,java,jit,Java,Jit,例如:Arrays.asList(“1”、“2”、“3”) 这是否会在应用程序生命周期内每次调用时创建一个新数组(用于varargs)和一个新的ArrayList?返回的列表是可变的。这必须在每次调用时返回不同的列表。据我所知,对于使用Varargs的方法,java将创建一个临时数组并将其发送给方法。因此,使用此方法实现: public static <T> List<T> asList(T... a) { return new ArrayList<>

例如:
Arrays.asList(“1”、“2”、“3”)


这是否会在应用程序生命周期内每次调用时创建一个新数组(用于varargs)和一个新的ArrayList?

返回的列表是可变的。这必须在每次调用时返回不同的列表。

据我所知,对于使用
Varargs的方法,java将创建一个临时数组并将其发送给方法。因此,使用此方法实现:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}
因此,新的ArrayList包含对list或
Varargs
发送到方法的对象的引用。
我认为数组和
Varargs
之间没有区别。对于
Varargs
编译器将创建一个临时数组,在运行时没有太大区别。

然而,JVM之间总是存在差异,您必须了解这一差异,但我不认为
Varargs
和普通数组之间存在差异。

非常明显。但是,如果我使用Lists.of,它会返回一个不可变的列表,那么它会在某一点上得到优化吗?@Sorin-这是允许的,根据:工厂可以自由创建新实例或重用现有实例。因此,对这些实例(引用相等(=)、标识哈希代码和同步)的标识敏感操作是不可靠的,应该避免。
private final E[] a;

ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
}