首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java二维数组有关问题

2012-08-24 
java二维数组问题下面是我刚开始学java二维数组的疑问。代码如下Java codepublic class Array2Demo{public

java二维数组问题
下面是我刚开始学java二维数组的疑问。
代码如下

Java code
public class Array2Demo{    public static void main(String[] args)    {        //二维数组的定义        int[][] arr=new int[2][3];        //arr[1][2]=12;        System.out.println(arr);        System.out.println(arr[0]);        //System.out.println(arr[0][0]);    }}

程序输出的结果是:
[[I@c17164
[I@1fb8ee3

我的问题是为什么两个输出的地址是不同的,求原理?
请各位帮我看看,给出详细的解答,感谢万千!

[解决办法]
首先跟你说下,在面向对象的程序设计当中,如果能不用数组就不要用数组,能不用二维数组就不用,用List比较好,java编程思想的作者也是这样推荐。所以在学习的时候没有必要费心思搞数组的太深的问题。

这里的问题是,为什么你觉得arr和arr[0]的地址是一样的呢,这个不符合逻辑。arr是引用对象,编译的时候它本身也占用内存,这个对象实际上指向了 值对象,不管arr是一维数组对象还是二维。

当你主动调用arr[0]的时候,程序会新返回一个引用对象,跟之前的arr显然不一样啊,你可以理解arr的引用能找到arr[0] arr[1]这两个引用对象,而arr[0]这个引用找到的是arr[0][0] arr[0][1] arr[0][2]这三个值
[解决办法]
很明显不可能一样的
引用对象指的对象就不一样
arr[0] arr[1]这两个引用对象,
而arr[0]这个引用找到的是arr[0][0] arr[0][1] arr[0][2]这三个值
[解决办法]
楼上说的已经很好了,我想说一点,即使对数组不是太了解,但看arr【】和arr【0】这两个引用对象从外形上都不一样,所以打印出来的东西部一样就很正常了啊
[解决办法]
System.out.println(arr);
System.out.println(arr[0]);
首先这两句打印的不是地址
其次java里面的数组和c的数组是不一致的,c的数组你可以直接得到地址,java是不行的

热点排行