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