Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java同时允许int x[]和int[]x?_Java_C_Arrays - Fatal编程技术网

为什么Java同时允许int x[]和int[]x?

为什么Java同时允许int x[]和int[]x?,java,c,arrays,Java,C,Arrays,注:此问题以前标记为重复问题。然而,这有着微妙的不同:研究者问这两种语法之间有什么区别;然而我知道这两者的意思没有区别,在这种情况下,我要问为什么Java同时允许这两种语言 为什么Java允许这两者 int x[]; 及 当我声明数组时 后者更有意义:变量名为x,而不是x[],其类型为int[],而不是int。为什么不强制执行呢?允许两种不同的语法似乎只会引起混乱和不一致。它甚至可以将二维数组声明为 int[] x[]; 几乎无法阅读 它是从C借来的吗?(无论如何,为什么C会这样做呢?它是为

注:此问题以前标记为重复问题。然而,这有着微妙的不同:研究者问这两种语法之间有什么区别;然而我知道这两者的意思没有区别,在这种情况下,我要问为什么Java同时允许这两种语言

为什么Java允许这两者

int x[];

当我声明数组时

后者更有意义:变量名为
x
,而不是
x[]
,其类型为
int[]
,而不是
int
。为什么不强制执行呢?允许两种不同的语法似乎只会引起混乱和不一致。它甚至可以将二维数组声明为

int[] x[];
几乎无法阅读


它是从C借来的吗?(无论如何,为什么C会这样做呢?

它是为了帮助C程序员习惯Java而添加的


在Java
int[]x中
是首选的方式。

添加它是为了帮助C程序员习惯Java


在Java
int[]x中是首选方式。

至少从规范来看,没有明确的理由说明两者都存在。但是,以下两种方法都提供了一定的灵活性。对于一个变量,两个声明都将为您提供一个int数组

在以下情况下,x和y都是阵列:

int[] x, y;
x是数组,y不是:

int x[], y;
另见。他们还表示,不建议使用混合表示法,注意以下示例:

float[][] f[][], g[][][], h[];  // Yechh!

至少从规范来看,这两者的存在并没有明确的理由。但是,以下两种方法都提供了一定的灵活性。对于一个变量,两个声明都将为您提供一个int数组

在以下情况下,x和y都是阵列:

int[] x, y;
x是数组,y不是:

int x[], y;
另见。他们还表示,不建议使用混合表示法,注意以下示例:

float[][] f[][], g[][][], h[];  // Yechh!


@用户3386109读了最后一段。是的,我刚刚读了。C不允许这样做。C这样做是因为
x[i]
int
@user3386109那么,C强制您使用
intx[]
。因此,如果您想要一种既可以使用C风格,又可以使用更合理的
int[]x
的语言,那么您就是Java所在的位置。对于这是否是一个好的设计决策,我不作任何评论。@ericbn感谢您提出类似的问题!不过,我的也不一样:那是问区别是什么,而我知道没有区别,我问为什么在这种情况下两者都可以。@user3386109阅读最后一段。是的,我刚刚读过。C不允许这样做。C这样做是因为
x[i]
int
@user3386109那么,C强制您使用
intx[]
。因此,如果您想要一种既可以使用C风格,又可以使用更合理的
int[]x
的语言,那么您就是Java所在的位置。对于这是否是一个好的设计决策,我不作任何评论。@ericbn感谢您提出类似的问题!但我的也不一样:那是问区别是什么,而我知道没有区别,我问为什么在这种情况下两者都被允许。通过帮助C程序员编写糟糕的Java来帮助他们习惯Java,这似乎是一个坏主意……我同意,但这就是Java。;)@交叉安全性由于C方式遵循use而Java首选方式不遵循use,我认为正好相反。@o11c但C方式混合了类型和实例声明。这是一个非常破烂和违反直觉的语法。很遗憾Java采用了它。通过帮助C程序员编写糟糕的Java来帮助他们习惯Java,这似乎是一个坏主意……我同意,但这就是Java。;)@交叉安全性由于C方式遵循use而Java首选方式不遵循use,我认为正好相反。@o11c但C方式混合了类型和实例声明。这是一个非常破烂和违反直觉的语法。很遗憾Java采用了它。