为什么 "int q[],p[]" 中的 p 是一个二维数组?

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

    }
}

Java中的数组 - Aniket Kulkarni
2个回答

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; // 这是 Java 中的一般首选

样式 2:int arr[]; // 我记得在 C++ 中使用这种风格

不要混合使用两种样式,这很可能会使您感到困惑。正如Jon 的评论所指出的那样,始终遵循第一种样式,因为它是推荐的样式。


但是请不要使用第二种风格 - 它只是回归到C语言,不建议使用。 - Jon Skeet
@JonSkeet - 根据您的建议更新了答案!:) - Rahul

6
请注意,当你在Java中写下以下代码时:
int[] q, p[]; 

那么qint[],而pint[][]

这就像写作一样:

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

但是当你编写代码时

int q[], p[]; 

那么qint[],而p也是int[]

这就是为什么你需要小心处理它。

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

还有一件事需要注意:

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

澄清:

当你写 int a, b 时,它表明 ab 都是 int。这样想:你在 ab 上“应用”了 int

但是当你有 int[] a, b[] 时,那么你就要在 ab[] 上“应用”int[]!所以你得到 aint[],但 bint[][]


但我的问题是 int []q,p[]。 - SpringLearner
@javaBeginner 我知道,我想我已经解释过了。 - Maroun
但是你解释了 int[] q,p[]。 - SpringLearner
是的,我知道它们都是相同的,因为我在问题中发布了有效的数组声明。 - SpringLearner
1
现在我完全明白了,所以+1。 - SpringLearner
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接