CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

关于System.arraycopy()方法的一个发现,不知道各位是否认可,或是偶的理解有误也肯请帮忙指正

楼主yesjoy(卫卫)2005-02-03 14:56:28 在 Java / J2SE / 基础类 提问

第一个程序如下,运行也完全无误  
  public   class   ArrayCopy  
  {  
          public   static   void   main(String[]   args)    
          {  
                  String   totalBookNames[]   =   new   String[1000];  
                  for(int   i=0;i<totalBookNames.length;++i)  
                  {  
                          totalBookNames[i]="图书"+i;  
                  }  
                  String   lendBookNames[]   =   new   String[15];  
                  System.arraycopy(totalBookNames,8,lendBookNames,0,15);  
                  System.out.println("借出的图书列表如:");  
                  for(int   i=0;i<lendBookNames.length;++i)  
                  {  
                          System.out.println(lendBookNames[i]);  
                  }  
          }  
  }  
  下面给出第二个使用该方法的程序,运行有错误  
  import   java.io.*;  
   
  public   class   AcceptInMessage  
  {  
          public   static   void   main(String[]   args)    
          {  
                  char   engChar[]   =   {'a','b','c','d','e','f','g','h','i','j','k','l','m',  
                                                  'n','o','p','q','r','s','t','u','v','w','x','y','z'};  
                  int   arcChar[]   =   {};  
                  System.out.println(engChar.length);  
                  System.arraycopy(engChar,0,arcChar,0,5);  
                  for(int   i=0;i<=25;i++)  
                  {  
                          System.out.print(engChar[i]);  
                  }  
                  System.out.println();  
          }  
  }  
   
  运行错误提示信息如下(编译正确)  
  Exception   in   thread   "main"   java.lang.ArrayStoreException  
                  at   java.lang.System.arraycopy(Native   Method)  
                  at   AcceptInMessage.main(AcceptInMessage.java:11)  
   
  不知道这里作何解释?难道说System.arraycopy()方法操作的数组只能应用于用new方法创建的数组吗?  
  问题点数:20、回复次数:5Top

1 楼yema55(我不会编程)回复于 2005-02-03 15:21:20 得分 4

int   arcChar[]   =   {},   长度为0的数组Top

2 楼yema55(我不会编程)回复于 2005-02-03 15:26:33 得分 4

sorry,原数组与目的数组应该同类型,不可转型Top

3 楼wang_mh(于阳)回复于 2005-02-03 15:43:05 得分 5

//import   java.io.*;  
   
  public   class   AcceptInMessage  
  {  
          public   static   void   main(String[]   args)    
          {  
                  char   engChar[]   =   {'a','b','c','d','e','f','g','h','i','j','k','l','m',  
                                                  'n','o','p','q','r','s','t','u','v','w','x','y','z'};  
                  char   arcChar[]   =     new   char[26];  
                  System.out.println(engChar.length);  
                  System.arraycopy(engChar,0,arcChar,0,5);  
                  for(int   i=0;i<=25;i++)  
                  {  
                          System.out.print(engChar[i]);  
                  }  
                  System.out.println();  
          }  
  }  
   
   
  这样就可以执行了,可能两个原因1、数组长度为0,2、数组类型不同Top

4 楼gobin()回复于 2005-02-03 15:46:52 得分 2

public   static   void   arraycopy(Object   src,  
                                                            int   srcPos,  
                                                            Object   dest,  
                                                            int   destPos,  
                                                            int   length)  
  Parameters:  
      src   -   the   source   array.  
      srcPos   -   starting   position   in   the   source   array.  
      dest   -   the   destination   array.  
      destPos   -   starting   position   in   the   destination   data.  
      length   -   the   number   of   array   elements   to   be   copied.    
  Throws:    
      IndexOutOfBoundsException   -   if   copying   would   cause   access   of   data   outside   array   bounds.    
      ArrayStoreException   -   if   an   element   in   the   src   array   could   not   be   stored   into   the   dest     array   because   of   a   type   mismatch.    
      NullPointerException   -   if   either   src   or   dest   is   null.  
  Top

5 楼gobin()回复于 2005-02-03 15:50:17 得分 5

public   class   AcceptInMessage  
  {  
  public   static   void   main(String[]   args)    
  {  
  char[]   engChar   =   {'a','b','c','d','e','f','g','h','i','j','k','l','m',  
  'n','o','p','q','r','s','t','u','v','w','x','y','z'};  
  char[]     arcChar   =   {'v','w','x','y','z'};  
   
  System.out.println(engChar.length);  
  try   {  
  System.arraycopy(engChar,0,arcChar,0,3);  
  }    
  catch   (Exception   e)   {  
  e.printStackTrace();  
  }    
  finally   {  
  for(int   i=0;i<arcChar.length;i++)  
  {  
  System.out.print(arcChar[i]);  
  }  
  }  
  }  
  }  
  执行  
  26  
  abcyz  
   
  数组类型要相同,长度可以不同Top

相关问题

  • 请高手指正
  • sql语句请教指正
  • 编译错误,请指正?
  • 求指正(关于HttpWebRequestStream)
  • 链表 新鲜出炉 恳请指正
  • 年龄核算请各位指正
  • 简单的代码,帮忙指正!
  • 郁闷~散分~~请求批评指正..
  • 递推问题,请大家指正!
  • 請高手批評指正!100分!!

关键词

  • arraycopy

得分解答快速导航

  • 帖主:yesjoy
  • yema55
  • yema55
  • wang_mh
  • gobin
  • gobin

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo