StringBuffer的用法

有一次在做项目的时候,发现一处平时都是用String的地方,用上了StringBuffer。不禁疑惑,在网上查了一下,看看他们之间的区别:

初始化:
StringBuffer s = new StringBuffer();
此时初始化的对象是一个空对象,如果是要创建带内容的对象,则
StringBuffer s = new StringBuffer(“abc”);
这样初始化出的StringBuffer对象的内容就是字符串”abc”;

需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

StringBuffer s = “abc”; //赋值类型不匹配
StringBuffer s = (StringBuffer)”abc”; //不存在继承关系,无法进行强转

StringBuffer对象和String对象之间的互转的代码如下:
// String转换为StringBuffer
String s = “abc”;
StringBuffer sb1 = new StringBuffer(s);

// StringBuffer转换为String
StringBuffer sb2 = new StringBuffer(“123”);
String s2 = sb2.toString();

StringBuffer的常用方法

StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。

1、append方法

public StringBuffer append(boolean b)

该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.append(true);

则对象sb的值将变成”abctrue”。

使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:

StringBuffer sb = new StringBuffer();

String user = “test”;

String pwd = “123”;

sb.append(“select * from userInfo where username=“)

.append(user)

.append(“ and pwd=”)

.append(pwd);

这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。

2、deleteCharAt方法

public StringBuffer deleteCharAt(int index)

该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:

StringBuffer sb = new StringBuffer(“Test”);

sb. deleteCharAt(1);

该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。

还存在一个功能类似的delete方法:

public StringBuffer delete(int start,int end)

该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:

StringBuffer sb = new StringBuffer(“TestString”);

sb. delete (1,4);

该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。

3、insert方法

public StringBuffer insert(int offset, boolean b)

该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

StringBuffer sb = new StringBuffer(“TestString”);

sb.insert(4,false);

该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。

4、reverse方法

public StringBuffer reverse()

该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.reverse();

经过反转以后,对象sb中的内容将变为”cba”。

5、setCharAt方法

public void setCharAt(int index, char ch)

该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:

StringBuffer sb = new StringBuffer(“abc”);

sb.setCharAt(1,’D’);

则对象sb的值将变成”aDc”。

6、trimToSize方法

public void trimToSize()

该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。

注:以上内容引用自http://blog.csdn.net/jason0539;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】安装tomcat并部署应用

安装tomcat 1.拉取tomcat镜像查看镜像部署应用[rootizwz99yhul3o6y7emidjqlz ~]# docker exec -it app bashrootcb526f04d30b:/usr/local/tomcat# lsBUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf include lib …

prompt set feedback set define的详解

prompt 输出后面的信息,类似操作系统的echo命令 SQL>prompt hello world--输出 hello world set feedback 客户端执行SQL时,数据库服务器都会返回反馈信息。如: 创建表时,成功的反馈信息为“Table Created”等 feedback属…

python 学习第四十七天shelve模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。 1,序列化 import shelve fshelve.open(shelve_test) names[www.96net.com.cn,"www.dc3688.com","www.baidu.com&quo…

怎么在oracle中使用for循环

测试打印语句: BEGIN sys.dbms_output.put_line(‘hello world’); END; DECLAREa number(20) :0; BEGINfor i in 1 .. 10 loop--insert into user (name) values(ss i); --写相关sqlsys.dbms_output.put_line(ss || i);end loop;commit; END; 详解&a…

structc 开源框架介绍

引言 - 一切才刚刚开始 structc 是 C 结构基础库. 简单可复用. structc - https://github.com/wangzhione/structc 之前也描述过几次 structc, 文字多代码风格少. 最近加班不多, 准备详细解说哈其思考初衷. 0.0 整体结构 structc ├── extern ├── LICENSE ├── Makefil…

charCodeAt()和charAt()的用法

语法: stringObject.charCodeAt(index) 参数index 必需,第一个字符的下标是0。如果index是负数,或者大于等于字符串的长度,则返回NaN。 作用:返回指定位置的字符的Unicode编码。这个返回值在0~65535之间的整数。 va…

“not a single-group group function”

在使用group by进行分组的时候,select 后面要查询出来的表字段 只用有两种情况: 1、在group by 子句中出现 2、或者写在聚合函数里面,像count(id)等等。 若是没有,select出来的表字段就会报错&#xff0…

jmeter笔记

Jmeter性能测试 入门Jmeter 录制脚本:使用一个叫badbody的工具录制脚步供jmeter使用,http://www.badboy.com.au/;也可以用jmeter来录制Jmeter教程 简单的压力测试linux环境jmeter测试probe监控tomcat转载于:https://www.cnblogs.com/liqipeng…

在oracle中的日期类型与String类型

to_date()作用是将字符类转化为日期类型。 具体用法:to_date(”2004-11-27”,”yyyy-mm-dd”),前者为字符串,后者为转换日期格式。 to_date(”2004-11-27 13:34:43”, ”yyyy-mm-dd hh24:mi:ss”) 将得到具体的时间 to_char()作用将日期转按一定格式换…

CSS颜色

CSS的颜色可以通过以下方法指定: 十六进制颜色RGB颜色RGBA颜色HSL色彩HSLA颜色 十六进制颜色 指定一个十六进制的颜色其组成部分是:#RRGGBB,其中RR(红色),GG(绿色)和BB(蓝…

URI 和 URL 的区别

URI : 统一资源标识符(Uniform Resource Identifier)是一个用于标识,某一互联网资源名称的字符串。 Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称”URI”)进…

CAN总线(1)--初探(更新中)

前言: CAN总线可以控制可以使用Xilinx中IP核来直接实现,也可以使用专用的CAN芯片(例如:SJA1000)通过单片机和FPGA驱动控制来实现; 目前是使用控制器SJA1000来进行实现; CAN总线控制器-SJA1000 结…

使用encodeURl()进行编解码

encodeURI() 函数可把字符串作为 URI 进行编码。 在js中要使用两次编码: var name encodeURI(encodeURI(name)); 在java中解码: String name URLDecoder.decode(request.getParameter("name"), "UTF-8"); decodeURI() 函数 :…

CodeForces 1065E. Side Transmutations 计数

昨天不该早点走的.... 首先操作限制实际上是一个回文限制 每个$b[i] - b[i - 1]$互不干扰,不妨设这个串关于中心点对称的这么一对区间的串分别为$(S_1, S_2)$ 题目的限制相当与存在$(T_1, T_2)$使得$T_1 inv(S_2) \;and\;T_2 inv(S_1)$ 考虑一对串$(S_1, S_2)$被计…

ORA-00911: invalid character

sql语句中最后多了分号的原因,去掉分号就可以。

Luogu1979 NOIP2013D2T3 华容道 搜索、最短路

题目传送门 题意:给出一个$N \times M$的棋盘,棋盘上有一些块可以移动,有一些块无法移动。$Q$次询问,每一次询问给出三个块$a,b,c$,将$a$块变为空格,空格旁边可移动的块可以与空格交换位置。问每一次询问中…

user_tab_columns是什么

user_tab_columns是保存了当前用户的表、视图和Clusters中的列等信息,用于oracle获取表结构。 user_tab_cols不同的是比user_tab_columns多几列: HIDDEN_COLUMN VARCHAR2(3) VIRTUAL_COLUMN VARCHAR2(3) SEGMENT_COLUMN_ID NUMBER INTERNAL_COLUMN_…

英语初级学习系列-00-Name-介绍自己

1. 询问名字 常用句子 1. Hi, may I have your name, please? 2. Could you please tell me your name? 3. Will it be convenient for you if I have your name? 4. your name? 5. What is your name? 使用场景 你想知道别人的叫啥的时候你想和别人搭话(搭讪&…

Oracle 怎么删除重复数据

1、根据rowid来查询重复数据 select * from table1 a where rowid !(select max(rowid) from table1 b where a.name1b.name1 ) 2、根据rowid来删除重复数据 delete from table1 a where rowid !(select max(rowid) from table1 b where a.name1b.name1 ) 3、根据group …

如何给代码自动添加注释?

丰富的注释和良好的代码规范,对于代码的阅读性和可维护性起着至关重要的作用。几乎每个公司对这的要求还是比较严格的,往往会形成自己的一套编码规范。但是再实施过程中,如果全靠手动完成,不仅效率低下,还难以保证真正…