博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9、StringBuffer和StringBuilder
阅读量:5830 次
发布时间:2019-06-18

本文共 2297 字,大约阅读时间需要 7 分钟。

StringBuffer简介

StringBuffer是一个字符串缓冲区,如果需要频繁的对字符串进行拼接时,建议使用StringBuffer。

工作原理
StringBuffer的底层是char数组,如果没有明确设定,则系统会默认创建一个长度为16的char类型数组,在使用时如果数组容量不够了,则会通过数组的拷贝对数组进行扩容,所以在使用StringBuffer时最好预测并手动初始化长度,这样能够减少数组的拷贝,从而提高效率。

String与StringBuffer的区别?

String是不可变字符序列,存储在字符串常量池中
StringBuffer的底层是char数组,系统会对该数组进行扩容

StringBuffer的构造方法:

package com.monkey1024.string;public class StringBufferTest01 {    public static void main(String[] args) {        //构造方法        StringBuffer sb1 = new StringBuffer();        //StringBuffer的初始容量        System.out.println(sb1.capacity());        //手动指定StringBuffer的长度        StringBuffer sb2 = new StringBuffer(100);        System.out.println(sb2.capacity());        StringBuffer sb3 = new StringBuffer("monkey");        System.out.println(sb3.capacity());//字符串的length + 16    }}

如何使用StringBuffer进行字符串拼接?

package com.monkey1024.string;public class StringBufferTest02 {    public static void main(String[] args) {        StringBuffer sb = new StringBuffer(30);        //调用append方法进行字符串拼接        sb.append("www");        sb.append(".");        sb.append("monkey1024");        sb.append(".");        sb.append("com");        System.out.println(sb);//自动调用其toString方法        //System.out.println(sb.toString());        sb.insert(4, "1024");//在指定位置插入字符串        System.out.println(sb);        sb.delete(4, 8);//删除指定位置的字符串        System.out.println(sb);    }}

String作为参数传递的问题

基本数据类型的值传递,不改变其值

引用数据类型的值传递,改变其值

String类虽然是引用数据类型,但是他当作参数传递时和基本数据类型是一样的

package com.monkey1024.string;public class StringBufferTest03 {    public static void main(String[] args) {        String s = "String";        System.out.println(s); //String        change(s);        System.out.println(s);//值没有改变 String        System.out.println("---------------------");        StringBuffer sb = new StringBuffer();        sb.append("StringBuffer");        System.out.println(sb); //String        change(sb);        System.out.println(sb); //Stringjava    }    public static void change(StringBuffer sb) {        sb.append("java");    }    public static void change(String s) {        s += "java";    }}

StringBuilder和StringBuffer的区别

通过API可以看到StringBuilder和StringBuffer里面的方法是一样的,那他们有什么区别呢?

StringBuffer是jdk1.0版本中加入的,是线程安全的,效率低
StringBuilder是jdk5版本加入的,是线程不安全的,效率高

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/10120219.html

你可能感兴趣的文章
Pedometer_forAndroid
查看>>
pyqt5开发环境安装
查看>>
https://blog.csdn.net/u012150179/article/details/38091411
查看>>
Mac 运行任何来源软件安装
查看>>
利用NATAPP隧道解决微信公众号开发之本地调试难题
查看>>
ros建立ospf邻居的条件
查看>>
服务容错模式
查看>>
inflate(int resource, ViewGroup root, boolean attachToRoot)见解
查看>>
网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面
查看>>
判断数组中是否存在重复的值,存在则删除,不存在则添加
查看>>
【BIRT】报表显示不全
查看>>
[LeetCode] Bricks Falling When Hit 碰撞时砖头掉落
查看>>
Jar包版本查看方法
查看>>
工作总结 string类型保存 "" 这种类型
查看>>
java热加载之springloaded
查看>>
Vue常用指令
查看>>
关于Android中根据ID名动态获取资源的两个方法
查看>>
Jvm(64),方法调用----解析
查看>>
[转]NLP数据集
查看>>
请自行检查是否安装VC9运行库??
查看>>