各位大侠都在哪里呢?
Arrays好像不行啊
看看吧,基础问题啊

解决方案 »

  1.   

    jav.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)这个方法你应该明白做了,详细可看java.lang.System的API,给分吧!
      

  2.   

    楼上 :
        你的那个问题我已经给分
        可是这个问题,我觉得还是有问题
        比如
            int a[] = new int[90]
        然后我要给它全部赋成-2
        那用你给的函数(我以前试过),我是不是要先作一个90个-2的数组,再实现给a赋值的目的呢?能不能说的详细一些,多谢.
      

  3.   

    Arrays.fill(Object[] objs, Object obj);
      

  4.   

    首先,说明一个问题,memset不能对int数组赋初值:memset()函数只能对在内存中连续分配的数据进行赋值,而且是对每个byte赋值。考虑下面的C++程序:
       char *p = new char[90];
       memset((void *)p, -2, 90);
    没问题,可以把90个char都赋成-2,因为C++里的char是一个byte(8bit);在看看下面的c++程序:
       int *p = new int[90];
       memset((void *)p, -2, 90);
    这就有问题了,它不能把数组里的每个int数据都赋成-2,实际上这样做的结果是:前22个int数据都是:0xFEFEFEFE,第23个是0xFEFEXXXX(X表示未知);剩下的int全都是未知;为什么会这样,因为每个int是4个byte,90个int就是360个byte,memset()只对前90个byte赋值。而-2用16进制表示正好是0xFE。由此可见,memset()只能对连续的byte赋值,如果需要赋值的数组不是char类型的,那么就不会得到预期的结果。所以要对int数组赋初值,用memset是不行的,除非赋值成0。唯一的办法还是用循环,一个一个来赋值。同样的道理对于long型数组,short型数组,memset也不能正确的赋初值。
    再来看看你的标题里的问题,可以明确的告诉你,java里没有类似c里的memset函数。原因很简单,memset可以直接操作内存,而java不能直接操作内存。
    java里的数组数据是不是在内存中连续分配的,这个我也不清楚,可能与JVM的实现有关,不同的JVM可能有不同的实现。所以java语言没有提供象memset这样的函数。但是,java里对于数组的处理有一个专门的工具类:java.util.Arrays
    这个类提供了5个功能:
    1,将数组转换成java.util.ArrayList类型;【asList()】
    2,数组的排序;【sort()】
    3,数组的二分查找;【binarySearch()】
    4,两个数组的比较;【equals()】
    5,给数组赋初值;【fill()】第5个功能正是你需要的,实际上这个方法是对数组里的每个数进行循环赋值,如果有兴趣,可以看看它的源码。