如何在Java中使用常量值高效初始化数组
有没有一种方法可以在没有for循环的情况下,将整数数组(或任何数组)初始化为除默认值零(或null)以外的常量值 理想情况下,我在matlab中寻找一个类似“one”的函数,它不仅更简洁,而且效率更高。是您所追求的方法。(尽管在内部它仍然使用for循环,因此与如何在Java中使用常量值高效初始化数组,java,arrays,initialization,Java,Arrays,Initialization,有没有一种方法可以在没有for循环的情况下,将整数数组(或任何数组)初始化为除默认值零(或null)以外的常量值 理想情况下,我在matlab中寻找一个类似“one”的函数,它不仅更简洁,而且效率更高。是您所追求的方法。(尽管在内部它仍然使用for循环,因此与System.arrayCopy()不同,它并没有更快。) 注意:数组,以及基于集合的对应类集合通常是两个非常有用的类。在某些实现中,它可能更快,因为JITC知道它可以绕过边界检查。它可能是,但我不知道有哪种JIT实现仅仅因为在`java.
System.arrayCopy()
不同,它并没有更快。)
注意:
数组
,以及基于集合的对应类集合通常是两个非常有用的类。在某些实现中,它可能更快,因为JITC知道它可以绕过边界检查。它可能是,但我不知道有哪种JIT实现仅仅因为在`java.util中就以不同的方式处理相同的代码。你知道一个特定的JIT可以做到这一点吗?我曾经在一个JITC上工作过,我认为更高级的Sun/Oracle JITC也可以做类似的事情,基于间接证据。java中的许多低级例程。包由JIT内部化,因此您在JDK源代码中看到的“引用”实现可能永远不会执行。您可以查看内部函数列表(这里是所有的内部函数)。它目前似乎不包括Arrays.fill,但确实包括来自数组的其他方法。谢谢,这是有用的知识。这些方法几乎总是使用循环。在Matlab中它可以更快的一个原因是它是一种解释语言,而Java可以编译成本地代码。具有讽刺意味的是,java中的一些循环可以进行大量优化,它们比使用本机调用更快。e、 g.使用循环复制long[]
比使用System.arrayCopy