gpt4 book ai didi

java - 这些不同类型的数组减速到底是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 06:28:27 25 4
gpt4 key购买 nike

所以我知道你可以通过以下方式声明数组:

int[] arr;

初始化它:

arr = new int [integer]

这些语句还可以组合成:

int[] arr = new int[integer];

此外,数组的声明、初始化和填充值的组合对我来说似乎很清楚:

int[] arr = {1, 2, 4, 5, 9};

但是,令我困惑的是,这也有效:

int[] testAr = new int[]{1, 2, 3, 4};

更让我困惑的是多维数组的相同原理:

int[][] yarr = new int[][]{ new int[]{1, 2}, new int[]{2, 3}, new int[]{3, 4} };

为什么会这样?这里到底发生了什么?我是否有理由像最后两个版本一样创建数组?另外,当我想到为什么在直接用值填充数组时可以省略 new 关键字?我刚刚开始了解对象,这违背了我目前所知道的基本原则。

最佳答案

语句 int[] arr = {1, 2, 3}; 是语句 int[] arr = new int[]{1, 2, 3} 的快捷方式;.

语句 int[][] arr = new int[][]{{1, 2}, {3, 4}} 是语句 new int[ 的快捷方式][]{new int[]{1, 2}, new int[]{3, 4}}

它们完全相同,第一个添加了一些语法糖来简化数组初始化。根据规范:

An array initializer may be specified in a declaration, or as part of an array creation expression, to create an array and provide some initial values.

如果在不同的作用域中使用初始化程序,则会发生编译时错误。例如,

class Test {
public static void main(String[] args) {
method({1, 2, 3}); // it is not allowed
method(new int[]{1, 2, 3}); // it is fine
}

static void method(int[] ints) { ... }
}

关于java - 这些不同类型的数组减速到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46618364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com