问题描述:-在一次讨论中,我发现程序员停滞不前,我认为我应该加入论坛。

今天,我正在将数组转换为char数组。然后,我检查了字符串类的 toCharArray()方法的定义。

char str[] = "native".toCharArray();

toCharArray()定义:-
public char[] toCharArray() {
    char result[] = new char[count];
    getChars(0, count, result, 0);
    return result;
}

getChars定义:-
public void getChars(int srcBegin,int srcEnd,char dst[],int dstBegin){
   if(srcBegin<0){
       throw new StringIndexOutOfBoundsException(srcBegin);
   }
   if(srcEnd>count){
       throw new StringIndexOutOfBoundsException(srcEnd);
   }
   if(srcBegin>srcEnd){
       throw new StringIndexOutOfBoundsException(srcEnd-srcBegin);
   }
   System.arraycopy(value,offset+srcBegin,dst,dstBegin,srcEnd-srcBegin);
}

然后是本机方法:-
public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                         int length);

在这里,我不必了解本机,但我必须知道在这种本机方法中,以相同的方式在此定义其他操作系统的本机方法。

最佳答案

之所以是本机的,是因为可以使用本机代码对本来很昂贵的功能进行大量优化。

但是无论使用哪种操作系统,其行为都是相同的。

10-07 20:51