为什么p在“int q [],p [];”是一个2D阵列?

时间:2013-10-17 06:45:37

标签: java

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

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[])
    {

    }
}

2 个答案:

答案 0 :(得分:10)

int []q, p[];

这可以写成

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

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

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

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

而不是两者兼而有之,这很可能让你感到困惑。作为Jon rightly commented,始终遵循第一种风格作为推荐风格。

答案 1 :(得分:6)

在Java中,请注意以下内容的区别:

int[] q, p[]; 

然后qint[]pint[][]

因为它就像写作:

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

但是当你写作

int q[], p[]; 

然后qint[]pint[]

这就是你应该小心的原因。

Java允许int array[]让C程序员感到高兴:)

需要注意的另一件事是:

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

<强>澄清

当您撰写int a, b时,很明显ab都是int。以这种方式思考:您在inta上“应用”b

但是如果你有int[] a, b[],那么你就int[]a“申请”了b[]!因此,aint[]bint[][]