Java如何处理动态布尔数组作为方法参数?

Java如何处理动态布尔数组作为方法参数?,java,arrays,methods,parameters,dynamic-memory-allocation,Java,Arrays,Methods,Parameters,Dynamic Memory Allocation,我使用的类有一个接受布尔[]的方法 此代码不会引发任何错误 public class myclass{ void move(boolean[] myarray) { //Do stufff } } 现在,我做了一点C++编码,这在动态内存的上下文中是不起作用的。 这本质上是一个java问题: 在我的例子中,接收到的数组有一个已知的长度,但是我想知道如果它是动态的,您将如何在Java中处理它(以及如果它不是动态的,我应该怎么做) 我猜想编译器或JVM会处理这个问

我使用的类有一个接受
布尔[]
的方法

此代码不会引发任何错误

public class myclass{
    void move(boolean[] myarray) {
         //Do stufff
    }
}

现在,我做了一点C++编码,这在动态内存的上下文中是不起作用的。 这本质上是一个java问题:

在我的例子中,接收到的数组有一个已知的长度,但是我想知道如果它是动态的,您将如何在Java中处理它(以及如果它不是动态的,我应该怎么做)


我猜想编译器或JVM会处理这个问题,但我想知道我能实现的速度优化。

< P>你应该考虑使用ARYAYLISH()来满足与迭代任意长度集合有关的所有需要。
在Java世界中,使用List也是一种很好的实践。有一篇文章是关于使用列表和数组的程序员的,而使用列表的程序员产生的bug往往较少。

Java中的数组总是等长的。从“创建阵列时确定阵列的长度”

如果需要动态数组,可以使用Collections框架中的一些内容,例如ArrayList

在任何情况下,对数组(或集合)的引用都会传递到move(…)中,因此仅函数调用的速度应该不会有任何差异


使用数组时,我希望(静态)数组的解引用速度比通过函数调用访问(动态)集合的元素更快。但是,要进行适当的比较,您需要提供更多关于如何使用数组的上下文。

Java数组有一个
length
属性,您可以在运行时读取该属性。旁注:让代码在VM上运行的要点之一是不要进行速度优化。VM做你在C++中做的大部分事情,通常比你自己做的要好。你用
处理它实际上是什么意思?。通过使用
myarray.length
您可以得到数组的长度,这样我就可以动态地处理它了。@bigcodeszer那么做吧。与每个与性能相关的优化一样,过程很简单:首先设定目标,然后测量,然后优化,并重复最后两个步骤,直到达到目标。您有任何理由认为传递布尔数组不够快吗?如果不是,我看不出问题出在哪里。感谢你不是在C++中编程。数组衰减为指针的事实非常可怕。可能是有用的阅读。在这种情况下,我可能会使用
位集,而不是布尔值列表。所以我猜你是说编译器隐式传递长度,然后初始化?使我困惑的是初始化。@bigcodeszzer初始化发生在函数调用之前,并且您的move(…)方法接受一个(已经)初始化的数组。@bigcodeszzer两者都没有。java数组就像一个完全成熟的对象,它有字段和类。使用
new
创建数组时,所有元素都将初始化为其默认值(取决于元素类型)。如果不为数组引用设置值,它将只是
null
。但是这一切都不是由编译器完成的。@bigcodeszzer您想知道
boolean[]
中的空方括号吗?Java数组作为对象的一部分具有自己的长度,因此形式参数中的方括号表示数组类型,而不是非数组简单类型。它不表示动态数组。请更正by引用by值,其中该值是对
布尔[]
对象的引用。