Java菜鸟问题:
考虑以下 C 数组和初始化程序代码:
struct {
int x;
int y;
} point_t;
point_t points[1000];
简单的。这会在加载时创建并分配内存。
现在考虑 Java 中的类似情况:
public class point_t
{
public int x;
public int y;
}
point_t points[] = new point_t[1000];
// Without this loop, java will crash when you run this
for (int i=0; i<1000; i++)
{
points[i] = new point_t;
}
points[0].x = 10; // Crash would occur here without above loop
points[1].x = 10;
最初,我的 java 程序因空指针取消引用而崩溃。问题是,来自 C++,我不知道您必须创建 1000 个 point_t 对象。只是一个评论,但这似乎很疯狂。假设数组大小为 100 万或 10 亿。在运行时用空条目“创建”这个数组实际上需要几秒钟。在 C++ 中,这一切都发生在加载时。我承认你并不总是知道 C++ 数组的单元格中会有什么,但在我工作的嵌入式系统中,内存通常会自动初始化为零,因此它可以工作。
那么,当你有一个对象数组时,在 Java 中有没有更简单、更快、更有效的方法来创建一个数组并分配内存呢?或者我在上面的代码中做错了什么?