A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜写意 中级黑马   /  2013-8-9 20:24  /  6818 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前写的代码中定义数组的时候用了
int[] arr = new int[];
也是成功建立了数组。
但是看帖子的突然发现里面定义数组的时候是用
int arr[] = new int[];
然后试了下,两个都可以。现在有点疑惑,他们之间有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

22 个回复

倒序浏览
毫无区别

只是书写方式不同.

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

所以这两个都可以.而且没有不同.
回复 使用道具 举报
2楼你错了,

看这。  int[] x,y[]  ;
  x是,1维数组, y是2维数组。面试你要说,在那都一样你就挂了。
回复 使用道具 举报
丁永志 发表于 2013-8-9 20:43
2楼你错了,

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

啥??   你这个我没看懂.
二维数组是这样的 int[][]好吗?
回复 使用道具 举报
孙浩臻 发表于 2013-8-9 20:45
啥??   你这个我没看懂.
二维数组是这样的 int[][]好吗?

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

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

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

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

http://blog.csdn.net/rogerjava/article/details/7552749
回复 使用道具 举报
孙浩臻 发表于 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);

看这个例子你还看不明白嘛?

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2 辛苦你们两个了

查看全部评分

回复 使用道具 举报
丁永志 发表于 2013-8-9 20:54
不是看不看帖子的问题,就这个问题,老师特意跟我们讲的,

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

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

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

刚刚我试了一下  真心太奇葩了..不过哥们儿你是对的. 我收回刚刚我说这样写的有问题的言论.
这是我见识短没见过. 现在我知道了.
这个问题就不纠结了.
谢谢

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2 辛苦你们两个了

查看全部评分

回复 使用道具 举报
孙浩臻 发表于 2013-8-9 20:51
LZ 和 这个哥们儿 可以看一下这个帖子

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

这篇博文貌似没有讲到中括号写在类型后面和变量名后面有什么区别
回复 使用道具 举报
白堇翎 发表于 2013-8-9 21:18
这篇博文貌似没有讲到中括号写在类型后面和变量名后面有什么区别

有提到的

开篇 1.一位数组

1.1 里面就有提到.只不过说的不明显.
回复 使用道具 举报
在定义一维数组的时候没有什么不同,只是书写方式不一样而已
回复 使用道具 举报
在定义一维数组的时候没有什么不同,只是书写方式不一样而已
建议使用int[] arr=new int[];
但是如果是定义二维数组的话就不同了,
就像三楼丁永志同学说的,如果是int[]x,y[]这样定义的话,
实际上定义的是:int[]x,  int[]y[],那么x就是一个一维数组,而y是一个二维数组

另外楼主后面写的int x,y[]也是不对的,这样定义的话,x其实是一个int类型的变量,而只有y才是数组
回复 使用道具 举报
  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是一个数组,楼主可以自己运行代码试一下
回复 使用道具 举报
哈哈  讨论的好激烈...
回复 使用道具 举报
大家都钻牛角尖了{:soso_e144:},
从楼主问题来看,他问的是一个一维数组的定义格式,
那么有童鞋提到:int[] x,y[];
其实也就是int[] x;和int[][] y;
这样已经是定义了两个数组,一个一维、一个二维,那么这个回答就超出楼主问题范围了,
所以你们自己偏题自己争论,与楼主的问题无关,但值得楼主注意
回复 使用道具 举报
夜写意 发表于 2013-8-9 21:12
这个明白了。但是可以这么定义么:int x,y[];

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


回复 使用道具 举报
本题解答详见黑马程序员_毕向东_Java基础视频教程第04天-14-数组(二维数组练习)
视频中毕姥爷解释得很清楚
[]对后面的标示符都有效
[]对前面最近的一个标示符有效
所以  int[] x,y[];  表示
第一个[]对x和y都有效
第二个[]对最近的y有效
于是产生的是
一个名为x的一维数组
一个名为y的二维数组
而楼主所问的两个不同表达式
在实际表达意义中不同
而实际表达效果中相同
所以可以混用
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马