String 源码分析 (三)
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家,51CTO 明日之星
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
String 源码分析(三)总结🤞这次都给他拿下🤞
正菜来了⛳⛳⛳
🎈String 类中的相关函数解析
🍮getChars(char dst[], int dstBegin)
含义:这个函数的主要作用就是吧 String 中的数组赋值到 dst 数组中,其内部调用 System.arraycopy 这个函数进行实现,关于这几个参数的不同意思。
value: 源数组
0:源数组开始的位置。
dst:目标数组,即要复制到目标数组中。
dstBegin:目标数组开始的位置。
value.length:要拷贝的字符串的长度。
🍮void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
含义:这个函数的主要作用和上边的函数差不多,主要是就是这个指定了源数组开始的位置和结束的位置,并且指定目标数组和目标数组开始的位置。
🍮void getBytes(int srcBegin, int srcEnd, byte dst[], int dstBegin)
含义:这个函数的意思和上边的差不多,这个就是把 String 底层的指定开始和结束位置的字符拷贝到指定开始位置的目标字节数组中。
🍮byte[] getBytes(String charsetName)
含义:使用命名字符集将此字符串编码为字节序列,并将结果存储到新的字节数组中。未指定此字符串无法在给定字符集中编码时此方法的行为。当需要对编码过程进行更多控制时,应使用 java.nio.charset.CharsetEncoder 类。通俗解释:这个函数的意思就是把 String 字符串按照指定的编码方式进行编码,并且返回一个字节数组。
上边采用到了两个非 String 中的方法,我们也来分析一下。
🍮byte[] encode(Charset cs, char[] ca, int off, int len)
含义:这个函数的意思是把 String 字符串按照指定的 charset 指定的格式进行编码为一个字节数组,并返回,这个和上边的函数比较相似,会采用 StringCoding.encode 这个函数进行编码。
🍮byte[] encode(char[] ca, int off, int len)
含义:这个和之前的很像,只不过没有传输指定的编码格式,而是采用默认的编码格式进行编码,代码中有一段代码String csn = Charset.defaultCharset().name();
这个是采用默认的 CharSet 的编码格式。
🍮boolean equals(Object anObject)
含义:这个函数主要是用于判断当前的 String 对象是否等于传入的 Object 对象,先通过使用== 判断引用是否相同,如果相同,直接返回 true,否者就把两个对象的数组一个一个字符的比较,当相同的时候,就返回 true,否则返回 false。
🍚总结
以上是关于 String 中相关函数的解析,希望有所帮助。Written By 知识浅谈
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/cb97fd4cd953beb1027b8d607】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论