tiankong1713 2013-05-03 21:23
浏览 249
已采纳

一个java问题,求解惑

public class Arraytest
{
public static void main( String[] args)
{
String[] str1 = new String[3];
str1[0] = new String("tian");
str1[1] = new String("kong");
str1[2] = new String("nan");

            String[] str2 = new String[3];
            System.arraycopy( str1, 0, str2, 0, str1.length);                

            str2[2] = "fengyun";  //这一行
            System.out.println(str1[2]);
            System.out.println(str2[2]); 
    }

}

刚学java, 学到了数组
这个程序我是这样理解的, 见图

[img]http://dl.iteye.com/upload/attachment/0084/0039/233bb34b-ced1-32f8-8756-0f42b8cd5187.png[/img]

那么我觉得复制了之后str1[2]和str2[2]应该指向同一个位子nan那里呀,
为什么改变了 str2[2]的值,str1[1]的值没有变呢 ,求帮忙解解惑,

  • 写回答

3条回答 默认 最新

  • 他山石1024 2013-05-04 09:56
    关注

    [size=xx-large][size=xx-large][size=x-large][size=large][size=medium]arraycopy是对数组进行浅拷贝,因此str2拷过去的是str1里面的引用,但是当给str2[2]赋值时,那时候str2[2]里面的引用改变了,然而str1[2]的引用依然是之前copy过去的引用。[/size][/size][/size][/size][/size]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?