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 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的