当前位置:  开发笔记 > 编程语言 > 正文

int []数组和int数组[]之间的区别

如何解决《int[]数组和int数组[]之间的区别》经验,为你挑选了12个好方法。

我最近一直在考虑定义数组的两种方法之间的区别:

    int[] array

    int array[]

有区别吗?



1> skaffman..:

它们在语义上是相同的.该int array[]只添加语法来帮助C程序员习惯的Java.

int[] array 是更可取的,而且不那么令人困惑.


[]是TYPE的一部分,而不是NAME的一部分.对我来说,这是最大的不同.
在`int [] x,y`的情况下,`y`是一个数组(因为`[]`属于该类型),如果是`int x [],y`,`y`不是数组(`[]`属于变量).
@Andre - 在C中,[]是声明器的一部分,而不是声明说明符,因此是`int array []`语法.也是合乎逻辑的...以某种扭曲的方式 :)
`int array []`对我来说更有意义.你怎么看待这个宣言?`int [] x,y`?你是一个数组吗?也许是,也许不是.只有Java的大师才能自信地回答......

2> Adam Rosenfi..:

如果您碰巧在同一声明中声明了多个变量,则会有一点不同:

int[] a, b;  // Both a and b are arrays of type int
int c[], d;  // WARNING: c is an array, but d is just a regular int

请注意,这是错误的编码风格,虽然编译器几乎肯定会在您尝试使用时捕获您的错误d.



3> TofuBeer..:

没有区别.

我更喜欢type[] name格式是显而易见的是变量是一个数组(少看看它是什么).

编辑:

哦等等有区别(我忘了,因为我从来没有一次声明多个变量):

int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.



4> Ishtar..:

不,这些都是一样的.然而

byte[] rowvector, colvector, matrix[];

相当于:

byte rowvector[], colvector[], matrix[][];

取自Java规范.这意味着

int a[],b;
int[] a,b;

是不同的.我不会推荐这些多个声明中的任何一个.最容易阅读(可能)是:

int[] a;
int[] b;


但是,优良作法是每个标识符使用一个声明,而不是在一行中声明多个标识符.

5> Jon Skeet..:

从Java语言规范的10.2节:

[]可能在声明开头作为类型的一部分出现,或作为特定变量的声明者的一部分出现,或者两者都出现,如下例所示:

 byte[] rowvector, colvector, matrix[];

该声明相当于:

byte rowvector[], colvector[], matrix[][];

就我个人而言,几乎所有我见过的Java代码都使用了第一种形式,通过将变量的所有类型信息保存在一个地方更有意义.我希望第二种形式不被允许,说实话......但这就是生活......

还好我不认为我曾经见过这个(有效)的代码:

String[] rectangular[] = new String[10][10];


+1我同意不接受第二种形式.+1也因为我没有意识到你可以混合'n'匹配像`int [] a [];` - 那*从来没有*会不清楚;-)

6> 小智..:

这两个命令是一回事.

您可以使用语法声明多个对象:

int[] arrayOne, arrayTwo; //both arrays

int arrayOne[], intOne; //one array one int 

请参阅:http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html



7> Yuval Adam..:

没有不同.

引自太阳报:

[]可以作为声明开头的类型的一部分出现,也可以作为特定变量的声明者的一部分出现,或者两者兼而有之,如下例所示:byte[] rowvector, colvector, matrix[];

该声明相当于: byte rowvector[], colvector[], matrix[][];



8> Luke Woodwar..:

两者之间没有任何区别; 两者都声明了一个ints 数组.但是,前者是优选的,因为它将类型信息保存在一个地方.后者只是真正支持C/C++程序员转向Java的好处.



9> Aaron Maenpa..:

没有真正的区别; 然而,

double[] items = new double[10];

是优选的,因为它清楚地表明该类型是一个数组.



10> BalusC..:

两者都同样有效.int puzzle[]然而,不鼓励使用该表格,int[] puzzle根据编码惯例,这是优选的.另请参阅官方Java数组教程:

同样,您可以声明其他类型的数组:

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

您还可以在数组名称后面放置方括号:

float anArrayOfFloats[]; // this form is discouraged

但是,公约不鼓励这种形式; 括号标识数组类型,并应显示类型名称.

注意最后一段.

我建议阅读官方的Sun/Oracle教程,而不是一些第三方教程.否则你最终会冒险学习不良做法.



11> Bohemian..:

它是一种替代形式,它借鉴了Cjava所基于的形式.

作为一种好奇心,有三种方法可以main在java中定义一个有效的方法:

public static void main(String[] args)

public static void main(String args[])

public static void main(String... args)


@nIcEcOw一个varargs参数,例如`String ... param`,*是*一个数组
@nIcEcOw,但是您可以使用数组调用变量,即`meth(int ... a)`可以称为`meth(1,2)`或`meth(new int [] {1,2}) `。Varargs是一种语法糖,可以将第一个版本转换为第二个版本。参数的实际(字节码)类型是数组类型。至于必须保持最后,如果您考虑一下,别无选择。

12> André..:

没有区别,但Sun建议将其放在此处所述的类型旁边

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有