前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新手学JAVA(二)----String类与StringBuffer类的区别

新手学JAVA(二)----String类与StringBuffer类的区别

作者头像
令仔很忙
发布2018-09-14 16:10:38
3740
发布2018-09-14 16:10:38
举报
文章被收录于专栏:令仔很忙

在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类)。 下面先简单的说一下两者的区别。 String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同。

(1) String类 该类一旦产生一个字符串,其对象就不可变。String类的内容和长度是固定的。如果程序需要获得字符串的信息需要调用系统提供的各种字符串操作方法实现。虽然通过各种系统方法可以对字符串施加操作,但这并不改变对象实例本身,而是生成一个新的实例。系统为String类对象分配内存,是按照对象所包含的实际字符数分配的。

(2) StringBuffer类 查了查Buffer这个词,有缓冲的意思,这个类肯定有缓冲的功能。该类处理可变的字符串。如果要修改一个StringBuffer类的字符串,不需要再创建新的字符串对象,而是直接操作原来的串。该类的各种字符串操作方法与String类提供的方法不相同。系统为StringBuffer类分配内存时,除去当前字符所占的空间外,还提供另外的16个字符大小的缓冲区。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

下面来举一些具体的实例

字符串的连接

String类有两种方法

第一种(“+”)

代码语言:javascript
复制
public class str{
    public static void main(String[] args){
            String str1="加特效!";
            String str2="Duang~~";
            System.out.println(str1+" "+str2);
        }
    }

第二种(”concat”)

代码语言:javascript
复制
public class str{
    public static void main(String[] args){
            String str1="加特效!";
            String str2="Duang~~";
            System.out.println(str1.concat(str2));
        }
    }

StringBuffer类的方法

代码语言:javascript
复制
public class str{
    public static void main(String[] args){
        //构建一个缓冲字符串的对象sb
        StringBuffer sb=new StringBuffer("加特效!");
        //通过append方法,在这个对象后面添加一个新字符串
        sb.append(" Duang~~");
        System.out.println(sb);
    }
}

最终输出的结果都为:加特效! Duang~~

通过上面的例子不难看出,String类在进行扩展的时候,需要实例两个对象,每个对象都会占用一定的内存,而StringBuffer类就不需要再实例化一个新的类,只需要调用一个扩展的方法就可以了。

还有一点StringBuffer类的内存容量是可扩展的。举个具体的例子:

代码语言:javascript
复制
public class str{
    public static void main(String[] args){
          //声明字符串对象sb
            StringBuffer sb=new StringBuffer(40);
            System.out.println(sb.capacity());      //输出字符串的容量capacity
            sb.ensureCapacity(100);                 //扩充容量
            System.out.println(sb.capacity());      //输出字符串的容量capacity
        }
    }

capacity()方法代表了字符串对象在内存中,可以容纳字符串的个数。如果想要扩充内存容量,可以使用方法ensureCapacity()。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年03月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档