我是Java编程的新手。在向前迈进之前,我正在清理所有的概念。我正在阅读一个数组章节,其中说明创建数组的基本结构是:
Type[] var_name = new Type[limit];
我正在阅读一些开放式课件的幻灯片。在这些幻灯片中,他们将类名插入到数组的类型中。例如:
public class Baby {
Baby[] siblings;
}
有人可以解释一下基本数组结构和类内部结构之间的区别。
答案 0 :(得分:5)
我认为这可能只是混淆什么构成一种类型。供参考:
Type[] var_name = new Type[limit]
"类型"必须替换为任何基本类型(int,double等)以及任何类(Baby,在您的情况下),例如:
String [] string_array = new String[10];
如果这不是你所遇到的问题,那么这两个陈述之间的另一个区别是第一个实际创建了一个大小的数组" limit"并将其分配给变量var_name ...而在Baby声明中,只有成员变量"兄弟姐妹"在Baby类中声明。该变量可以容纳Baby数组,但该数组尚未创建。在Baby构造函数中,您可能会看到类似的内容:
Baby() {
siblings = new Baby[100];
}
这将创建一个大小为100的Baby类对象引用数组,并将其分配给正在创建的Baby实例的兄弟成员。
答案 1 :(得分:0)
Baby[] sibling
只是数组的声明。它表示编译器Baby
包含一个类型为array的变量
你提到的第一行是#34;声明"一个数组以及"初始化"它。
通过初始化编译器根据数组的大小分配内存。这是当实际值可以插入数组变量时。
答案 2 :(得分:0)
数组基本上是一个连续内存块,它可以包含基本数据类型或您创建的类型对象。 Java是一种静态类型语言 - 您必须在编译时指定参数的类型。因此,在声明数组时指定类型,即使在初始化数组时,也只是初始化一个连续的内存块。通过指定类型,编译器知道该内存用于保存该对象或该类型的原语。
Type[] type = new Type[size];
上面的代码行创建了一个大小为'大小的连续内存块。它包含类型'类型'的元素。 (在这种情况下,只是一个占位符,表示您希望数组保存的元素类型)。请注意,您必须在此处指定类型。
当你有这条线时:
Baby[] siblings;
你正在声明数组。你还没有初始化它。在使用之前,您应该将其初始化为:
siblings = new Baby[size];
此时才为此阵列分配内存。