首页 > 其他 > 详细

String的replace方法

时间:2015-11-15 12:05:04      阅读:414      评论:0      收藏:0      [点我收藏+]
 1     public String replace(char oldChar, char newChar) {
 2         if (oldChar != newChar) {
 3             int len = value.length;
 4             int i = -1;
 5             char[] val = value; /* avoid getfield opcode */
 6 
 7             while (++i < len) {
 8                 if (val[i] == oldChar) {
 9                     break;
10                 }
11             }
12             if (i < len) {
13                 char buf[] = new char[len];
14                 for (int j = 0; j < i; j++) {
15                     buf[j] = val[j];
16                 }
17                 while (i < len) {
18                     char c = val[i];
19                     buf[i] = (c == oldChar) ? newChar : c;
20                     i++;
21                 }
22                 return new String(buf, true);
23             }
24         }
25         return this;
26     }

该代码的逻辑为:

1、首先查找字符串中是否有需要替换的字符,并记录此位置为i

2、接下来判断是否存在,如果i的值字符串长度说明此字符串不包含需要被替换的字符,则直接返回原字符串的引用

3、如果存在需要替换的字符,则开辟新的空间并将i之前的字符串复制到新开辟的空间中,之后对i及之后的字符串进行判断后复制

4、构建新的String对象并返回

 

给我的提示:

1、replace方法并不会每次都构建新的String对象

2、String对象所代表的字符串是保存在一个char[]数组中,为final,但是保存的内容并不是不可变的(通过反射)

3、改实现首先判断是否存在需替换的字符,然后在需要的时候才进行内存的开辟和对象的构建,提高了代码的效率,减少了内存的消耗

4、编码过程中对于一个需求的实现,首先分析未发生该事件时的处理办法,然后基于分析完成后续的编码

String的replace方法

原文:http://www.cnblogs.com/NightTassel/p/4966332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!