当前位置: 首页 > 面试题库 >

用Java声明数组

司马奇希
2023-03-14
问题内容

看完之后,我才知道,arrays in Java是物体。数组的名称不是实际的数组,而只是引用。new运算符在堆上创建数组,并返回对新创建的数组对象的引用,然后将其分配给数组变量(名称)。类似于以下内容:

int[] myArray = new int[5];

但是我也使用了这两种类型的数组声明。

int[] myArray= new int[]{5,7,3};

int[] myArray= {5,7,3};

以上两项均合法且可以正常工作。那么这两者之间有什么区别,我应该何时使用它们?


问题答案:

这将生成一个大小为5的数组,其中包含5个null元素:

int[] myArray = new int[5];

如果这些值在编译时不是您所知道的,则可能会更有用。例如

int[] myArray = new int[blah.size()];
for (int i = 0; i < blah.size() ; i++) {
  myArray[i] = getFoo(blah.get(i));
}

如果您提前知道尺寸,则可以使用其他形式。

int[] myArray = {blah.get(0), blah.get(1), blah.get(2)};

以下内容是等效的(编译为相同的字节码),并生成一个推断的大小为3的数组,其中包含三个元素5、7和3。如果存在固定的一组值或至少一个固定的大小,则此格式很有用一组值。

int[] myArray = new int[]{5,7,3};
int[] myArray = {5,7,3};

否则,您可以使用更长的形式完成相同的操作:

int[] myArray = new int[5];
myArray[0] = 5;
myArray[1] = 7;
myArray[2] = 3;

但这是不必要的冗长。但是,如果您不知道有多少东西,则必须使用第一种形式。



 类似资料:
  • 如果您编译它,然后用运行它,它将打印:b ...所以它要取第一个数组,并自动包装它以适应二维数组??真奇怪。有人能解释一下这是怎么回事吗?我很确定我错过了什么。

  • 问题内容: 我正在学习Java泛型,我问自己这个问题。 这两个方法声明之间有什么区别? 和 问题答案: 在后者中,您可以引用范围内的类型,即。在前者中,您不需要。

  • 问题内容: 在没有泛型类型的类中,我想声明一个类似于以下内容的相当复杂的泛型字段: 问题是Java编译器不会让我:) 所以我的问题是如何正确地引入T和S,而又不向类Client添加类型。 我的目标是强制成为您选择的类的子类型和作为子类。 问题答案: 你不能 唯一的选择是在类声明中声明泛型类型参数。如果您的类没有泛型类型参数,则其成员不能为泛型。您必须在类成员的声明中使用实际类型。

  • 数组要占用内存空间。程序员指定每个元素的类型和每个数组所要的元素,使编译器可以保留相应的内存空间。要告诉编译器对整型数组c保留12个元素,可以声明如下: int c[12]; 可以在一个声明中为几个数组保留内存。下列声明对整型数组 b 保留 100 个元素,对整型数组x保留27个元素: int b[100],x[27]; 数组可以声明包含其他数据类型。例如,char 类型的数组可以存放字符串。字符

  • 5.1. 函数声明 函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 func name(parameter-list) (result-list) { body } 形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量,其值由参数调用者提供。返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的。如

  • 问题内容: 我们有一个带有 Java 文件的 Maven 项目(打包为JAR)。最近将一个新的 Java 源文件添加到该项目中。添加Java文件的路径与其包声明不匹配。不出所料,Eclipse在类中显示了不匹配的错误。但是,Maven可以很好地构建项目。在生成的JAR文件中,.class文件位于包声明所指示的路径中。我们试图将Java源文件移动到其他不正确的文件夹中(即与包声明不同),但是每次Ma