黑马程序员技术交流社区

标题: int[] arr与int arr[]有什么区别吗? [打印本页]

作者: 夜写意    时间: 2013-8-9 20:24
标题: int[] arr与int arr[]有什么区别吗?
之前写的代码中定义数组的时候用了
int[] arr = new int[];
也是成功建立了数组。
但是看帖子的突然发现里面定义数组的时候是用
int arr[] = new int[];
然后试了下,两个都可以。现在有点疑惑,他们之间有什么区别吗?
作者: sunhaoz    时间: 2013-8-9 20:30
毫无区别

只是书写方式不同.

int[] arr 是java推荐方式.
int arr[]  是C语言中使用的方式. java继承了C语言中的这一点.

所以这两个都可以.而且没有不同.
作者: 丁永志    时间: 2013-8-9 20:43
2楼你错了,

看这。  int[] x,y[]  ;
  x是,1维数组, y是2维数组。面试你要说,在那都一样你就挂了。
作者: sunhaoz    时间: 2013-8-9 20:45
丁永志 发表于 2013-8-9 20:43
2楼你错了,

看这。  int[] x,y[]  ;

啥??   你这个我没看懂.
二维数组是这样的 int[][]好吗?
作者: 丁永志    时间: 2013-8-9 20:50
孙浩臻 发表于 2013-8-9 20:45
啥??   你这个我没看懂.
二维数组是这样的 int[][]好吗?

定义数组时, 中括号跟着数据类型走,所有的变量都应用,中括号跟着变量走,只有自己应用。

谁不知道  int [] [] 这是2维数组?
  
我只不过举例子说明,括号在前在后,不一样。不是书写习惯的问题。
作者: sunhaoz    时间: 2013-8-9 20:51
丁永志 发表于 2013-8-9 20:43
2楼你错了,

看这。  int[] x,y[]  ;

LZ 和 这个哥们儿 可以看一下这个帖子

http://blog.csdn.net/rogerjava/article/details/7552749
作者: 丁永志    时间: 2013-8-9 20:54
孙浩臻 发表于 2013-8-9 20:51
LZ 和 这个哥们儿 可以看一下这个帖子

http://blog.csdn.net/rogerjava/article/details/7552749 ...

不是看不看帖子的问题,就这个问题,老师特意跟我们讲的,

看这。 int [] x, y[];
x=new int[3];
y = new int [3][];
System.out.println(y);

看这个例子你还看不明白嘛?
作者: 夜写意    时间: 2013-8-9 21:12
丁永志 发表于 2013-8-9 20:54
不是看不看帖子的问题,就这个问题,老师特意跟我们讲的,

看这。 int [] x, y[];

这个明白了。但是可以这么定义么:int x,y[];
作者: 黑马王晓明    时间: 2013-8-9 21:16
这只是定义数组的两种格式  用哪种都是可以的 没什么区别
唯独在定义二维数组的时候  int [] x, y[];  这样的话意思是定义了一个二维数组
可以分解成 x=new int[4];   y = new int [4][]; 这样看待
这里稍加注意就行了  一般定义的都是普通数组 所以两种方式int[] arr=new int[] 和 int arr[]=new int[] 楼主习惯用哪种都是可以的
作者: sunhaoz    时间: 2013-8-9 21:18
丁永志 发表于 2013-8-9 20:54
不是看不看帖子的问题,就这个问题,老师特意跟我们讲的,

看这。 int [] x, y[];

刚刚我试了一下  真心太奇葩了..不过哥们儿你是对的. 我收回刚刚我说这样写的有问题的言论.
这是我见识短没见过. 现在我知道了.
这个问题就不纠结了.
谢谢
作者: 白堇翎    时间: 2013-8-9 21:18
孙浩臻 发表于 2013-8-9 20:51
LZ 和 这个哥们儿 可以看一下这个帖子

http://blog.csdn.net/rogerjava/article/details/7552749 ...

这篇博文貌似没有讲到中括号写在类型后面和变量名后面有什么区别
作者: sunhaoz    时间: 2013-8-9 21:23
白堇翎 发表于 2013-8-9 21:18
这篇博文貌似没有讲到中括号写在类型后面和变量名后面有什么区别

有提到的

开篇 1.一位数组

1.1 里面就有提到.只不过说的不明显.
作者: 大漠月影    时间: 2013-8-9 21:41
在定义一维数组的时候没有什么不同,只是书写方式不一样而已
作者: 大漠月影    时间: 2013-8-9 21:54
在定义一维数组的时候没有什么不同,只是书写方式不一样而已
建议使用int[] arr=new int[];
但是如果是定义二维数组的话就不同了,
就像三楼丁永志同学说的,如果是int[]x,y[]这样定义的话,
实际上定义的是:int[]x,  int[]y[],那么x就是一个一维数组,而y是一个二维数组

另外楼主后面写的int x,y[]也是不对的,这样定义的话,x其实是一个int类型的变量,而只有y才是数组
作者: 大漠月影    时间: 2013-8-9 21:56
  1. class  Test1
  2. {
  3.         static int x,y[];
  4.         public static void main(String[] args)
  5.         {               
  6.                 System.out.println(x);
  7.                 System.out.println(y);
  8.         }
  9. }
复制代码
打印结果为0和nulll,说明x是一个int 类型的变量,而y是一个数组,楼主可以自己运行代码试一下
作者: 黄兴旺    时间: 2013-8-9 22:05
哈哈  讨论的好激烈...
作者: 吴光新    时间: 2013-8-9 22:29
大家都钻牛角尖了{:soso_e144:},
从楼主问题来看,他问的是一个一维数组的定义格式,
那么有童鞋提到:int[] x,y[];
其实也就是int[] x;和int[][] y;
这样已经是定义了两个数组,一个一维、一个二维,那么这个回答就超出楼主问题范围了,
所以你们自己偏题自己争论,与楼主的问题无关,但值得楼主注意
作者: 垂天云    时间: 2013-8-10 06:55
夜写意 发表于 2013-8-9 21:12
这个明白了。但是可以这么定义么:int x,y[];

我记得毕老师视频里说过,现实开发要是这么定义,组长会跟你玩命的!:lol
作者: 布易般    时间: 2013-8-10 08:27
对计算机而言: int[] arr与int arr[]  是一样的
但是对阅读程序的人来说:int arr[]   很容易被误会成int类型的一个变量
      
所以不推荐使用。实际上arr这个变量是int[] 类型。



作者: EYE_SEE_YOU    时间: 2013-8-10 08:43
本题解答详见黑马程序员_毕向东_Java基础视频教程第04天-14-数组(二维数组练习)
视频中毕姥爷解释得很清楚
[]对后面的标示符都有效
[]对前面最近的一个标示符有效
所以  int[] x,y[];  表示
第一个[]对x和y都有效
第二个[]对最近的y有效
于是产生的是
一个名为x的一维数组
一个名为y的二维数组
而楼主所问的两个不同表达式
在实际表达意义中不同
而实际表达效果中相同
所以可以混用
作者: 丁永志    时间: 2013-8-10 20:15
召唤版主给加点分阿,,这么激烈的讨论。

昨天断网了,哎 咱们北京这宿舍杂老断网。

作者: 如果我长大了。    时间: 2013-8-10 20:53
它们之间没区别。  int arr[] = new int[]这种方式是沿用C++的语法 。在JAVA里也可以用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2