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

Java怪异数组行为

南门意蕴
2023-03-14
问题内容

为什么这样做有效:

int[] array = {1, 2, 3};

但这不是:

int[] array;
array = {1, 2, 3};

如果我有一个数组实例变量,并且想在我的构造函数中对其进行初始化,那么我不必走

array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;

我觉得我在这里想念什么吗?


问题答案:

{...}这里的构造在Java中称为数组初始化器。这是一个特殊的速记,仅在某些语法构造中可用:

[JLS

10.6数组初始化器](http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.6)

一个 初始化器阵列 可被指定在一 声明 ,或作为部分 数组创建表达式
,创建一个数组并提供一些初始值。[…]数组初始值设定项是用逗号分隔的表达式列表,"{"并用大括号和括起来"}"

如指定的那样,您只能在声明中或在数组创建表达式中使用此速记。

int[] nums = { 1, 2, 3 };       // declaration

nums = new int[] { 4, 5, 6 };   // array creation

这就是为什么以下内容无法编译的原因:

// DOES NOT COMPILE!!!
nums = { 1, 2, 3 };

// neither declaration nor array creation,
// array initializer syntax not available

另请注意:

  • 尾随逗号可能会出现;它将被忽略
  • 如果要初始化的元素类型本身是数组,则可以 嵌套 数组初始化器

这是一个例子:

    int[][] triangle = {
            { 1, },
            { 2, 3, },
            { 4, 5, 6, },
    };
    for (int[] row : triangle) {
        for (int num : row) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

上面的照片:

1 
2 3 
4 5 6

也可以看看

  • Java教程/螺母和螺栓/数组
  • java.util.Arrays-有许多阵列相关的实用方法,如equalstoString


 类似资料:
  • 我正在设计一个网站,有一些h3标题和段落,包装在一个名为“featured-info”的div类中。此外,我还有一个footer元素,它位于主体中的主包装器中。各段用斜体字写成: 并且页脚有边框: 页脚文本也是一个h4向上感知: 主要的问题是我有一个设置:@media screen和(最小宽度:750px),它使一些导航按钮内联,并调整一些文本的大小,但是...当页面大小小于750px时,页脚样式

  • 我正在实现一个应用程序,该应用程序根据曼哈顿距离查找(x,y)平面中给定位置的最近n个事件。我使用最大优先级队列来存储找到的事件,并使用曼哈顿距离比较器。这个队列应该总是有最大人距离事件作为它的窥视,但是我发现这不会一直发生。我在循环中使用pq.poll()打印了这个队列的结果,我发现队列在删除后没有重新排列,只是有时。 我的比较者: 以主方法打印: 输出: 如您所见,事件不是按降序排列的!然而,

  • 问题内容: 当数组包含字符串数据时,我在使用numpy时遇到一些琐碎的麻烦。我有以下代码: 现在,当我使用打印时,得到的响应是,显然不是Cat和Apple的预期输出。为什么会这样,如何获得正确的输出? 谢谢! 问题答案: Numpy要求字符串数组具有固定的最大长度。当您使用创建空数组时,默认情况下会将最大长度设置为1。你看你是否做; 它将显示“ | S1”,表示“一个字符的字符串”。随后的数组分配

  • 下面是两个不同的,一个带有,另一个带有state 当您为这两个打开下拉菜单时,您将注意到for patient showboth和inverted(单击它时,在input字段中输入值)。在State中,它只是简单地显示状态 这些不同行为的原因是什么?我希望输入仅显示的像状态和在&中有不同的数据

  • 为什么在Java中字节的位移位行为是这样的?

  • 问题内容: 无法理解下面的代码中发生了什么。阵列的行为,并为我所期望的那样。但是,这是怎么回事与和?(我也使用普通的标量变量进行了此尝试,在任何情况下都不会发生令人惊讶的事情。) 输出被复制到RH注释。 根据这篇文章,and 的可交换性表示值传递:Java是值传递,该死!。(我还查看了按引用传递的java数组不起作用?,但我听不懂asker的英文,方法调用使示例变得晦涩。) 请注意,与线注释,并表