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 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制