JDK源码学习--AbstractStringBuilder reverse()
2017-08-03 14:25
435 查看
public AbstractStringBuilder reverse() { //是否含代理字符 //高代理highSurrogate和低代理lowSurrogate概念请另查询char与Unicode字符 boolean hasSurrogate = false; //定义一个变量表示长度-1 int n = count - 1; //j初始化,长度-2再算术右移一位 j = (count-2)/2 //偶数长度,遍历一半次数,对调替换 //奇数长度,遍历一半-1次数,对调替换,中间值不用替换 for (int j = (n-1) >> 1; j >= 0; --j) { char temp = value[j]; char temp2 = value[n - j]; //如果无代理 if (!hasSurrogate) { hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE) || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE); } value[j] = temp2; value[n - j] = temp; } if (hasSurrogate) { // Reverse back all valid surrogate pairs //反转回所有有效代理对 //高代理+低代理组合表示一个字符 for (int i = 0; i < count - 1; i++) { char c2 = value[i]; if (Character.isLowSurrogate(c2)) { char c1 = value[i + 1]; if (Character.isHighSurrogate(c1)) { value[i++] = c1; value[i] = c2; } } } } return this; }
相关文章推荐
- jdk源码阅读笔记-AbstractStringBuilder
- JDK源码学习系列03----StringBuffer+StringBuilder
- JDK源码学习系列03----StringBuffer+StringBuilder
- Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
- JDK源码学习(2)-String.intern()方法详解
- AbstractStringBuilder 源码分析
- Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
- JDK源码学习--String篇(二) 关于String采用final修饰的思考
- JAVA JDK API 源码学习 - Arrays.toString
- JDK源码学习笔记——String
- JDK源码学习之String
- [LeetCode][9]Palindrome Number解析与StringBuilder.reverse()源码实现 -Java实现
- JDK源码学习--String篇(四) 终结篇
- JDK源码学习之String篇
- JDK 源码学习之String
- java的String学习加JDK源码的学习
- JDK学习之AbstractStringBuilder接口&&StringBuffer&&StringBuilder
- java核心基础--jdk源码分析学习--String
- ToStringBuilder学习(三):abstract、子类与多态的单例模式
- JDK源码学习(1)-String