3.18 将String 中的部分字符复制到指定的字符数组中去
[Java] 纯文本查看 复制代码 String text1 ="ABCDEF";
//目标字符数组
char[] chars = new char[10];
//拷贝
text1.getChars(0,text1.length(),chars,0);
//参数一 参数二 拷贝String中字符的范围
//参数三 目标字符数组
//参数四 目标字符数组中的存储起始位置
从源码角度来看
[Java] 纯文本查看 复制代码 public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
if (srcBegin < 0) {
throw new StringIndexOutOfBoundsException(srcBegin);
}
if (srcEnd > value.length) {
throw new StringIndexOutOfBoundsException(srcEnd);
}
if (srcBegin > srcEnd) {
throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
}
System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
}
其直接调用 System 的拷贝数组的方法将数据拷贝
[Java] 纯文本查看 复制代码 public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
对于System的arraycopy方法来说,其直接调用 JNI层方法实现
在上述调用 System的arraycopy方法的时候 传入参数
参数一 (value)父级String对应的字符数组
参数二 (srcBegin)父级String开始拷贝数据的起始位置
参数三 (dst) 目标数组
参数四 (dstBegin) 目标数组存储数据的起始位置
参数五 (srcEnd - srcBegin) 截取父String中字符的长度
|