以下是有效数组声明的不同方法
int p[]
或int []p
或int[] 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[])
{
}
}
答案 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[];
然后q
为int[]
而p
为int[][]
因为它就像写作:
int[] q;
int[] p[];
但是当你写作
int q[], p[];
然后q
为int[]
而p
为int[]
这就是你应该小心的原因。
Java允许int array[]
让C程序员感到高兴:)
需要注意的另一件事是:
int[] happyArray1, happyArray2;
int happyArray[], happyInt;
<强>澄清强>:
当您撰写int a, b
时,很明显a
和b
都是int
。以这种方式思考:您在int
和a
上“应用”b
。
但是如果你有int[] a, b[]
,那么你就int[]
和a
“申请”了b[]
!因此,a
为int[]
,b
为int[][]
。