StringBuffer的使用
2015-10-07 23:02
435 查看
一.StringBuffer与String的区别
1.StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是内存地址的指向,而StringBuffer中的内容是可以改变的,这是StringBuffer与String的最大不同
2.StringBuffer本身是一个操作类,所以不能用直接赋值的方式实例化,只能通过构造方法完成
3.连接字符串,String类通过“+”完成,StringBuffer通过append()方法实现
二.StringBuffer的常用方法
1.字符串连接操作
三.StringBuffer的实际应用
如下代码不断改变String对象的引用,性能很低
此时就需要用StringBuffer来实现
记住:凡是需要频繁修改字符串内容的时候,都要使用StringBuffer类完成
参考资料:
李兴华老师java基础
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基础
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- 非常不错的脚本入侵基础知识总结第1/2页
- AS3 Flex基础知识100条
- Ruby基础知识之方法、代码段
- Ruby中的String对象学习笔记
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- 浅谈Lua的面向对象特性
- Lua面向对象之类和继承浅析
- Lua教程(二):基础知识、类型与值介绍
- JavaScript面向对象的两种书写方法以及差别
- 浅谈c# 面向对象之类与对象
- PostgreSQL ERROR: invalid escape string 解决办法
- C#面向对象特征的具体实现及作用详解
- C# 面向对象的基本原则