本帖最后由 葛晓东 于 2014-6-7 22:24 编辑
- /**
- * 字符串缓冲区自定义翻转
- *
- */
- /*
- * 分析:
- * 字符串缓冲区底层数据结构是可变数组
- * 1,将字符串缓冲区转换为字符串,再将字符串转换为字符数组
- * 2,所谓反转就是数组中最远的两个元素互换位置,可以引入第三方变量来实现互换
- * 3,得到数组后再转换为字符串缓冲区就可以了
- */
- public class MyReverseDemo {
- public static void main(String[] args) {
- //定义字符串缓冲区
- StringBuilder builder = new StringBuilder();
- builder.append("123true");
- //调用自定义翻转方法
- myReverse(builder);
- System.out.println(builder);
- }
- //自定义翻转方法
- private static StringBuilder myReverse(StringBuilder builder){
- //将字符串缓冲区转换为字符串
- String str = builder.toString();
- //将字符串转换为字符数组
- char[] chs = str.toCharArray();
- //在字符数组中操作字符互换位置
- for (int i = 0; i < chs.length/2; i++) {
- //定义第三方变量,实现互换位置
- char temp = chs[i];
- chs[i] = chs[chs.length-1-i];
- chs[chs.length-1-i] = temp;
- }
- //换完之后再将得到的字符数组转换为字符串缓冲区
- return (builder.delete(0,builder.length())).append(chs);
- }
- }
复制代码
能不能不用deleted()方法,new 一个StringBulider()来接收返回的新字符串?
我试着这样操作了一下
StringBuilder builder1 = new StringBuilder();
return builder1.append(chs); 为什么输出的还是原来的字符串缓冲区 |
|