黑马程序员技术交流社区

标题: String常用方法源码分析片篇 [打印本页]

作者: 赵龙    时间: 2016-9-23 09:28
标题: String常用方法源码分析片篇
本帖最后由 赵龙 于 2016-9-23 09:34 编辑

android研发中对String思考
http://blog.csdn.net/zl18603543572/article/details/52614585


121212.png (99.33 KB, 下载次数: 35)

内容详情

内容详情

作者: 赵龙    时间: 2016-9-23 09:31
为什么帖子中 显示不出来 我添加的链接  ?
作者: 煮酒拭剑赏美人    时间: 2016-9-23 09:32
我什么也看不到,除了一个标题
作者: 赵龙    时间: 2016-9-23 09:35
煮酒拭剑赏美人 发表于 2016-9-23 09:32
我什么也看不到,除了一个标题

修改了一下 可以显示出来了
{:2_30:}
http://blog.csdn.net/zl18603543572/article/details/52614585
作者: zjy9399    时间: 2016-9-23 10:12
是点代码方法出来就更加好了
作者: 赵龙    时间: 2016-9-27 16:55
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中字符的长度





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2