int[] a1={1,2,3,4,5};
int[] a2;
a2=a1;
for (int i=0;i<a2.length;i++) 
a2[i]++;
for (int i=0;i<a1.length;i++)
System.out.println("a1["+i+"]="+a1[i]);


到底是怎么执行呢?运行的结果是:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6为什么是a1[0]=2呢?我实在搞不懂

解决方案 »

  1.   

    a1和a2都是指向相同的区域的啊你对a2进行a2[i]++; 这样的操作,实际上就是对数组所指的那片内存进行的操作,而不是地址,所以a1也会发生变化的。
      

  2.   

    两个引用指向同一个地址,即使一个改变那地址的内容,另一个也受影响,假如你clone的话就不发生这种事了!原因是 数组是 obejct!
      

  3.   

    同意楼上
    数组属于引用数据类型。a2=a1; 这句实际上是传递的引用(首地址和长度),所以两数组指的是同一段内存。对a2的操作实际上也是对a1的操作。
      

  4.   

    力争成为中国最大的架构师群联盟,架构师1群:43545919已满,2群:59048426的招募也近尾声,现3群:17303696正式开放,各群内容基本相同,高手也经过群主进行了调整,希望大家不必重复加入!培训经过筛选才会进行,请大家不必着急!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
    google 、
    eBay、
    Youtube、
    淘宝等
    ......
    技术文章包括:
    《自己动手写操作系统》
    《搜索引擎-原理、技术与系统》
    《企业应用架构模式》
    ......
    重要的RUP实例
    设计模式精解
    ......
    资料陆续上传中
      

  5.   

    力争成为中国最大的架构师群联盟,架构师1群:43545919已满,2群:59048426的招募也近尾声,现3群:17303696正式开放,各群内容基本相同,高手也经过群主进行了调整,希望大家不必重复加入!培训经过筛选才会进行,请大家不必着急!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
    google 、
    eBay、
    Youtube、
    淘宝等
    ......
    技术文章包括:
    《自己动手写操作系统》
    《搜索引擎-原理、技术与系统》
    《企业应用架构模式》
    ......
    重要的RUP实例
    设计模式精解
    ......
    资料陆续上传中
      

  6.   

    力争成为中国最大的架构师群联盟,架构师1群:43545919已满,2群:59048426的招募也近尾声,现3群:17303696正式开放,各群内容基本相同,高手也经过群主进行了调整,希望大家不必重复加入!培训经过筛选才会进行,请大家不必着急!!!已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
    google 、
    eBay、
    Youtube、
    淘宝等
    ......
    技术文章包括:
    《自己动手写操作系统》
    《搜索引擎-原理、技术与系统》
    《企业应用架构模式》
    ......
    重要的RUP实例
    设计模式精解
    ......
    资料陆续上传中
      

  7.   

    a1和a2数组的引用是相同的.所以你对a2的操作,对a1也是起作用的.
    给你举一个例子:
       假如你们家就你和你的妻子.住在一个房间里.你和你妻子都有开这个门的钥匙.
       当你妻子用钥匙打开你的门,把房间收拾了一下,等你回家,用钥匙打开门口,发现是收拾完的房间
       你就是:a1
       你妻子是:a2
       钥匙:内存的引用(地址)
       房间:内存空间
      

  8.   

    楼上也解释挺多的,我也稍微吹一下在java中要充分理解对象这个概念,其实a1,a2永远都只是一个指针引用,他们引用的是同一个对象,所以不管你改变a1还是a2其实都是改
    {1,2,3,4,5}的数组,
    因为
    a1=a2的时候对象没有被复制!当然基本数据类型和String类型是会被复制的!