StringBuilder的原理

字符串是常量;它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组 不能改变 是一个常量

进行字符串的相加 内存中就会有多个字符串 占用空间多 效率低下

如:

 

 而StringBuilder是字符串缓冲区 可以提供字符串的操作效率(看成一个长度可以变化的字符串)

底层也是一个数组 但是没有被final修饰 可以改变长度

 StringBuilder在内存中始终是一个数组 占用空间少 效率高 如果超出了StringBuilder的容量 会自动扩容

StringBuilder的使用

构造方法

1.public StringBuilder();构造一个空的StringBuilder容器

2.public StringBuilder(String str);构造一个StringBuilder容器 并将字符串添加进去

代码:

public static void main(String[] args) {
//构造一个空的StringBuilder容器 也是无参构造方法
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1"+bu1);
//构造一个StringBuilder容器 并将字符串添加进去 也是有参构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2"+bu2);
}

 成员方法

1.public StringBuilder append(…);添加任意类型数据的字符串形式 并返回当前对象自身

代码:

public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
//添加任意类型数据的字符串形式 并返回当前对象自身
StringBuilder z = bu1.append("张三");//添加String类型的数据
System.out.println(bu1);
System.out.println(z);
System.out.println(z==bu1);//true 说明两个地址值是一样的
System.out.println("-----------------------------");
//使用append无须接收返回值了 因为它最后返回的是它本身
StringBuilder bu2 = new StringBuilder();
bu2.append("abc");
bu2.append(true);
bu2.append(0.0);
bu2.append(10);
bu2.append('玺');
System.out.println(bu2);
}

运行结果:

2.public String toString();将当前StringBuilder对象转换为String对象

代码:

public static void main(String[] args) {
//将当前StringBuilder对象转换为String对象
StringBuilder sb = new StringBuilder("abcdef");
String s = sb.toString();
System.out.println(s);
System.out.println(s==sb);
}
s==sb:

说明两个不是一个地址值String是一个StringBuilder是另一个两个没有办法进行判断只会出现编译错误

原文地址:http://www.cnblogs.com/shenziyi/p/16798010.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性