java中String与StringBuffer的具体该怎么用?

 我来答
秋雨寒草露
2011-01-02 · TA获得超过192个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:132万
展开全部
去我的百度空间 里面有介绍这两个的用法。简单点就是String相比StringBuffer消耗资源。一个是不可变的 一个是可变的。
一般数据量小的时候使用String!

关于java的字符串处理我们一般使用String类和StringBuffer类
那么String类和StringBuffer类的区别在什么地方呢?
与包装类相似,String类是不可以改变的,从而不能修改字符串的值,所以必须创建一个新的字符串来存放,每次都重新开辟了一个内存空间。
如果字符串较少的话我们可以使用String 类,如果文件有几百成千个字节又会怎么样呢.
相反,我们提供另一个类Stingbuffer 来对字符串进行操作。
String类常用方法:
char charAt(int index); 返回index索引位置的字符
int length(); 返回字符串的长度。
String substring(int beginindex,int endindex) 返回一个新的字符串,其值是beginindex索引位置到endindex索引位置。
String trim(); 去除字符串两边的空格,并返回一个新的字符串。
String toLowerCase(); 将字符串中的所以大写字母转换成小写字母,已有大写字母则不需要转换,并返回一个新的字符串。
String toUpperCase();String toLowerCase(); 将字符串中的所以小‘写字母转换成小写字母,已有小写字母则不需要转换,并返回一个新的字符串。

boolean equals(String str);本对象中的字符串与str对象字符串进行比较(区分大小写) 返回一个boolean值
String replace(char oldChar, char newChar);将旧的字符串(oldChar)换成新的字符串(newChar)
String类方法:
主要方法
append();向字符串末尾添加数据,而不像String类重新开辟空间存放新的内容
insert();根据方法的重载传递不同的参数,在指定的位置对字符串进行插入子字符串。
例:
String str = "how ";
str += "are ";
str +="you";
如果我们打印str的最终结果是how are you 是我们所期望的,内存里面的变化:
how
how are
how are you
String类使用重载加法运算符,在字符串表中创建新的条目,上面一共创建了三条。
当处理的字符串过多时,上面的做法就很耗费内存。

StringBuffer str = new StringBuffer("how");
//向str末尾添加字符串
str.append("are ");
str.append( "you");
将需要处理字符串交给StringBuffer类处理 ,
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,
就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。而不是重新声明新的对象
这样的话就不会耗费内存!
azhqgu
推荐于2018-03-29 · TA获得超过323个赞
知道小有建树答主
回答量:563
采纳率:75%
帮助的人:202万
展开全部
StringBuffer主要用来存储那些不固定长度,可变性很高的字符串。拼接的效率比String的+=高。
String一半用来存储不会随意变更或者内容变化频率非常低的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love_zxd2008
推荐于2016-04-04
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
String可以这样用
String s = "I";
String o=s+"love"+"you";
StringBuffer可以这样用;
比如你在查询语句动态的给参数查询时可以用他拼凑HQL语句
StringBuffer sb = new StringBuffer("FROM USER AS A WHERE 1=1");
sb.append(" AND A.userName='");
sb.append(userName);
sb.append("'");
sb.append(" AND A.age='");
sb.append(age);
sb.append("'");
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xmigl55
2011-01-10 · TA获得超过3263个赞
知道小有建树答主
回答量:1729
采纳率:50%
帮助的人:761万
展开全部
应该是你的编译器的问题!我想你是用JCreator吧!这个东西有点问题!要是你的JDK是1.6的话!你在cmd环境下编译是不会有这问题的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gpasb46
2011-01-03 · TA获得超过3628个赞
知道小有建树答主
回答量:1614
采纳率:100%
帮助的人:1013万
展开全部
应该是你的编译器的问题!我想你是用JCreator吧!这个东西有点问题!要是你的JDK是1.6的话!你在cmd环境下编译是不会有这问题的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式