3

以下是有效数组声明的不同方式

int p[]int []pint[] p假设我们写int x,y然后 x 和 y 都是整数类型但是当我写int []q, p[];为什么编译器说这p是一个二维数组

请看下面的代码

public class some {
    int []q, p[];
    void x() {  
        p=new int[10][3];// this is valid
        //p=new int[10];// compiler expects p as 2d array
        q=new int[10];  
    }
    public static void main(String args[])
    {

    }
}
4

2 回答 2

10
int []q, p[];

这可以写成

int[] q;
int[] p[]; // This is effectively a 2d array and that is why compiler gives that error.

这就是为什么您需要遵循任何一种声明数组的样式。

样式 1int[] arr; // This is the general preference is Java

风格 2int arr[]; // I remember using this style when working in C++

而不是将两者结合起来,这很可能会让你感到困惑。正如乔恩正确评论的那样,始终遵循第一种风格作为推荐的风格。

于 2013-10-17T06:48:45.823 回答
6

请注意在 Java 中编写时的区别:

int[] q, p[]; 

然后qint[]pint[][]

因为它就像写:

int[] q;
int[] p[];

但是当你写

int q[], p[]; 

然后qint[]pint[]

这就是为什么你应该小心。

Javaint array[]只允许让 C 程序员感到快乐 :)

还有一点需要注意:

int[] happyArray1, happyArray2;
int happyArray[], happyInt;

澄清

当您编写int a, b时,很明显aandb都是ints。这样想:你在和int上都“应用” 。ab

但是,当您拥有 时,您就可以同时int[] a, b[]“应用”和!所以你得到的是,但是是。int[]ab[]aint[]bint[][]

于 2013-10-17T06:48:25.547 回答