【问题标题】:Why is this Java array considered two dimensional?为什么这个 Java 数组被认为是二维的?
【发布时间】:2009-07-18 21:31:20
【问题描述】:

考虑这段代码:

class arraytest {

    public static void main(String args[]) {

        int[] a = null , b[] = null;

        b = a;
        System.out.println( b );

    }

}

线

b = a;

被编译器标记为:

Incompatible types, found int[], required int [][]

为什么 b 被认为是二维的?我意识到“捷径”声明

int[] a = null , b[] = null;

是罪魁祸首,但是为什么只写了一组括号时它会使数组变成二维的?我发现这种语法不清楚且令人困惑。

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    举个例子:

    int a, b;
    

    那么 a 和 b 都是整数,对吗?所以现在拿这个:

    int[] a, b;
    

    a 和 b 都是 int 数组。所以通过添加另一组括号:

    int[] a, b[];
    

    已经在 b 中添加了另一组括号。

    其中任何一个都可以:

    int[] a = null , b = null;
    int a[] = null , b[] = null;
    

    或者如你所说,简单地将它们放在单独的行上也可以(并且更容易阅读)。

    【讨论】:

      【解决方案2】:
      int[] a = null , b[] =null;
      


      ....等于:

      int[] a = null;
      int[][]b = null;
      

      你必须这样做:

      int[] a = null , b =null;
      

      【讨论】:

        【解决方案3】:

        除了其他答案,Java 没有多维数组。 Java 有任何类型的数组。这种“任何类型”本身可能是一个数组。多维数组有明显的不同,虽然很微妙。

        【讨论】:

          【解决方案4】:

          如果你拿出a 声明,这就是你所拥有的:

          int[] b[] = null;
          

          不幸的是,这是一种合法的替代

          int[][] b = null;
          

          【讨论】:

            【解决方案5】:

            我被引导相信允许在 b 之后使用 [] 的语法仅适用于 C 语言人群,他们会对此感到更加熟悉。不幸的是,它具有允许混淆声明的副作用,例如

             int[] b[];
            

            一样
             int[][] b;
            

            【讨论】:

              猜你喜欢
              • 2021-06-03
              • 1970-01-01
              • 2014-03-08
              • 2018-09-29
              • 2018-01-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多