StringBuffer的使用
来源:互联网 发布:时间穿梭机 淘宝 编辑:程序博客网 时间:2024/05/16 07:46
一.StringBuffer与String的区别
1.StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是内存地址的指向,而StringBuffer中的内容是可以改变的,这是StringBuffer与String的最大不同
2.StringBuffer本身是一个操作类,所以不能用直接赋值的方式实例化,只能通过构造方法完成
3.连接字符串,String类通过“+”完成,StringBuffer通过append()方法实现
二.StringBuffer的常用方法
1.字符串连接操作
public StringBuffer append(String str)//注意append()方法返回StringBuffer类型
public class StringBufferDemo01{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello");buf.append("world").append("!!!");buf.append("\n").append('\n').append(1).append('n');//注意单引号只能引用一个字符System.out.println(buf);}}
继续验证StringBuffer中的内容可以改变,利用引用传递来验证
public class StringBufferDemo02{public static void main(String[] args){StringBuffer buf = new StringBuffer();fun(buf);System.out.println(buf);}public static void fun(StringBuffer s){s.append("Jack").append(" love ").append("Rose");}}
2.任意位置添加内容
public StringBuffer insert(int offset,boolean b)public class StringBufferDemo03{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("World");buf.insert(0,"Hello");//在第一个内容之前添加内容System.out.println(buf);}}public class StringBufferDemo04{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("World");buf.insert(buf.length(),"Hello");//在第一个内容之前添加内容System.out.println(buf);}}StringBuffer和String一样,都可以通过length()方法求出长度
3.字符串的反转操作
public StringBuffer reverse()public class StringBufferDemo05{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello World");String str = buf.reverse().toString();//将内容反转后变为String类型System.out.println(str);}}4.替换操作,替换指定范围的内容
public StringBuffer replace(int start,int end,String str)public class StringBufferDemo06{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello World");buf.replace(6,11,"Jack");System.out.println(buf);}}5.字符串截取
public String substring(int start,int end)// 注意返回String类型public class StringBufferDemo07{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello World");String str = buf.substring(6,11);System.out.println(str);}}6.删除指定范围内容
public StringBuffer delete(int start,int end)public class StringBufferDemo08{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello World");buf.delete(6,11);System.out.println(buf);}}7.查找内容是否存在
在String类中可以用indexof()方法进行查找,在StringBuffer中也用此方法
如果找到了返回位置,没找到返回-1
public int indexOf(String str,int fromIndex)public class StringBufferDemo08{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Hello World");if(buf.indexOf("Hello") != -1){System.out.println("找到了");}else{System.out.println("未找到");}}}
三.StringBuffer的实际应用
如下代码不断改变String对象的引用,性能很低
public class StringBufferDemo10{public static void main(String[] args){String str = "Jack";for(int i=0;i<100;i++){str += i;//不断修改string的内存引用}System.out.println(str);}}
此时就需要用StringBuffer来实现
public class StringBufferDemo10{public static void main(String[] args){StringBuffer buf = new StringBuffer();buf.append("Jack");for(int i=0;i<100;i++){buf.append(i);//利用StringBuffer优化程序}System.out.println(buf);}}
记住:凡是需要频繁修改字符串内容的时候,都要使用StringBuffer类完成
参考资料:
李兴华老师java基础
0 0
- StringBuffer的使用陷阱
- Stringbuffer的使用
- StringBuffer类的使用
- StringBuffer类的使用
- StringBuffer的使用
- StringBuffer的使用
- StringBuffer的使用
- java Stringbuffer的使用
- StringBuffer类的使用
- StringBuffer类的使用
- StringBuffer 的使用
- StringBuffer类的使用
- android StringBuffer的使用
- Android的StringBuffer的使用
- StringBuffer构造函数的使用
- StringBuffer与StringBuilder的使用
- 关于StringBuffer的简单使用
- android StringBuffer类的使用
- 堆内存分配
- 【Ruby】模块扩展方法介绍
- 黑盒测试与其几个主要的方法
- javascript,函数声明和函数表达式
- HTML5WebSocket实现点对点聊天
- StringBuffer的使用
- Android ListView和GridView异步加载图片
- Android:自定义标题栏
- 阿里云服务器挂载数据盘
- java,BufferedReader 输入
- 关于abstract 与接口的比较
- javascript,小数值舍入操作方法:ceil()、floor()、round()
- Remove Nth Node From End of List
- 小白入门 友盟分享全攻略