黑马程序员技术交流社区
标题:
字符串缓冲区
[打印本页]
作者:
葛晓东
时间:
2014-6-4 23:54
标题:
字符串缓冲区
本帖最后由 葛晓东 于 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); 为什么输出的还是原来的字符串缓冲区
作者:
轻语。
时间:
2014-6-5 09:01
粗略看一下应该是因为你新建的builder1是在 myReverse方法内部的,你可以在方法内打印builder1
System.out.println(builder1.append(chs)); 值是所需要的。
而主函数中传递的是builder,打印的还是builder。
所以myReverse方法中实现的功能应该是对builder进行操作,并返回。
作者:
18353665932
时间:
2014-6-5 09:32
/**
* 字符串缓冲区自定义翻转
*
*/
/*
* 分析:
* 字符串缓冲区底层数据结构是可变数组
* 1,将字符串缓冲区转换为字符串,再将字符串转换为字符数组
* 2,所谓反转就是数组中最远的两个元素互换位置,可以引入第三方变量来实现互换
* 3,得到数组后再转换为字符串缓冲区就可以了
*/
public class A {
public static void main(String[] args) {
//定义字符串缓冲区
// StringBuilder builder = new StringBuilder();
// builder.append("123true");
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;
}
StringBuilder builder1 = new StringBuilder();
//换完之后再将得到的字符数组转换为字符串缓冲区
System.out.println(builder1.append(chs));
return builder1.append(chs);
}
}
复制代码
你可以将输出语句放在类中试试,在主函数中打印的还是builder的内容,放在类中就是新建的对象的了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2