
StringBuffer类
发布日期:2021-05-07 09:11:27
浏览次数:22
分类:精选文章
本文共 2406 字,大约阅读时间需要 8 分钟。
StringBuffer类
String特点:
- 每一个字符串的常量都属于一个String类的匿名对象,并且不可更改。
- String有两个常量池:静态常量池、运行时常量池
- String类对象实例化建议使用直接赋值的形式完成,可以直接将对象保存在对象池之中方便下次重用。
弊端:内容部不允许修改
解决方案:StringBuffer类
范例:来观察String与StringBuffer类的对比
//String类public class StringDemo{ public static void main(String[] args) { String str = "Hellow"; change(str); System.out.println(str); } public static void change(String temp) { temp += "Word!"; }}
Hellow
结果并未改变
String必须像普通对象一样进行实例化才可以进行处理
- 构造方法:public StringBuffer();
- 数据追加:public StringBuffer append(数据类型 变量),相当于字符串中的“+”。
//StringBuffer类public class StringBufferDemo { public static void main(String[] args) { StringBuffer stringbuffer = new StringBuffer("Hellow"); change(stringbuffer); System.out.println(stringbuffer.toString()); } public static void change(StringBuffer temp) { temp.append(" Word!"); }}
Hellow Word!
大部分情况下很少出现字符串内容的改变,这种改变指的并不是静态常量池的改变。
public class Demo { public static void main(String[] args) { String strA = "www.baidu.com"; String strB = "www."+"baidu"+".com"; System.out.println(strA == strB); }}
true
注意:这种形式并不算改变,编译之后strB与strA的内容是一样的,String在编译时的变化如下:
String strA = "WWW."+"BAIDU"+".COM";//在编译运行时的情况StringBuffer buf = new StringBuffer();buf.append("WWW.").append("BAIDU").append(".COM")String与StingBuffer之间本来就可以互相转换,“+”等同“append()”
- String类变为StringBuffer可以依靠StringBuffer类的构造方法或者append()方法
- 所有的对象都可以通过toString()方法变为字符串
String类不具备但StringBuffer具备的方法:
- insert(int 脚标,数据类型 内容):在指定的脚标位置插入指定内容
public static void main(String[] args) { StringBuffer buf = new StringBuffer(); buf.append(".com").insert(0, "www.").insert(4, "baidu"); System.out.println(buf); }
www.baidu.com
- delete(int 开始脚标,int 结束脚标):删除范围的数据
public static void main(String[] args) { StringBuffer buf = new StringBuffer(); buf.append(".com").insert(0, "www.").insert(4, "baidu").delete(4, 9); System.out.println(buf);}
www..com
- reverse():String内容反转
public class StringBuffer类 { public static void main(String[] args) { StringBuffer buf = new StringBuffer(); buf.append(".com").insert(0, "www.").insert(4, "baidu").reverse(); System.out.println(buf); }
moc.udiab.www
实际上与StringBuffer类还有一个类似的功能类:StringBuider类,JDK1.5提供。该类中提供的方法与StringBuffer功能相同,最大的区别在于StringBuffer类的方法属于线程安全的,全部使用了syncrhrozed关键字进行标注,而StringBuider类属于非线程安全的。
面试题:解释String、StringBuffer与StringBuider的区别?
- String类是字符串的首选类型,其最大的特点是内容不允许修改
- StringBuffer与StringBuider类的内容允许修改
- StringBuffer是在JDK1.0提供的,属于线程安全的操作,StringBuider是在JDK1.5提供的,属于非线程安全操作。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月08日 09时30分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
[apue] getopt 可能重排参数
2021-05-09
移动互联网恶意软件命名及分类
2021-05-09
adb shell am 的用法
2021-05-09
PySide图形界面开发(一)
2021-05-09
Android如果有一个任意写入的漏洞,如何将写权限转成执行权限
2021-05-09
三角网格体积计算
2021-05-09
现代3D图形编程学习-基础简介(2) (译)
2021-05-09
Github教程(3)
2021-05-09
vue实现简单的点击切换颜色
2021-05-09
vue3 template refs dom的引用、组件的引用、获取子组件的值
2021-05-09
深入浅出mybatis
2021-05-09
Zookeeper快速开始
2021-05-09
cas客户端流程详解(源码解析)--单点登录
2021-05-09
882. Reachable Nodes In Subdivided Graph
2021-05-09
402. Remove K Digits
2021-05-09
375. Guess Number Higher or Lower II
2021-05-09
650. 2 Keys Keyboard
2021-05-09
764. Largest Plus Sign
2021-05-09
214. Shortest Palindrome
2021-05-09
916. Word Subsets
2021-05-09