从屌丝到架构师的飞越(API篇)-StringBuffer类

一、介绍

String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。

String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量, 它的对象是可以扩充和修改的。

当我们对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

二、知识点介绍

1、概念

2、StringBuffer类常见方法

三、上课对应视频的说明文档

1、概念

字符串是不可变的,所以每拼写一次字符串均会产生新的对象,而字符串缓冲区是一个可变的字符串临时存储区域。在该区域内存储、拼写需要的字符串,当需要真正的字符串时,再将存储区内的字符串取出,这样全部过程只有一个字符串缓冲区对象,更为高效。

同步安全问题会在多线程的学习后了解。

StringBuffer是线程同步的(安全的),StringBuilder是不同步的(不安全的),二者方法完全一致。

线程同步操作需要消耗更多的系统资源,所以更慢,而在日常开发过程中,同一个字符串的操作通常不会涉及多线程问题,所以在不考虑安全问题的情况下,尽量使用速度更快的StringBuilder。

2、StringBuffer类常见方法

public StringBuffer append(Xxx xxx)  //向字符串缓冲区中添加字符串

public String toString()    //将缓冲区内内容返回

//其他删除、修改、插入等方法可自行查询API

import Person;//导入Person类

/*

* StringBuffer 字符串缓冲区  线程安全  效率低

* StringBuilder 字符串缓冲区  线程不安全 效率高

*

* public StringBuffer append(Xxx xxx) //向字符串缓冲区中添加字符串

* public String toString()    //将缓冲区内内容返回

*/

public class Demo01 {

public static void main(String[] args) {

String s ="";

for (int i = 0; i < 10; i++) {

s+="i love java"+i;

}

System.out.println(s);

StringBuffer  sb = new StringBuffer();

for (int i = 0; i < 10; i++) {

sb.append("i lova java"+i);

}

sb.append(true);

sb.append('d');

sb.append(250);

sb.append(new Person());

System.out.println(sb.toString());

}

}

3.3  链式调用:

在StringBuffer的方法中,有许多方法的返回值都是该类型本身,如append方法。这时,阅读API后发现,其实返回值就是其本身,这时我们可以继续调用append方法,依次类推,这种调用方法叫做链式调用。

如:

StringBuffer  sb = new StringBuffer();

sb.append(“aaa”) .append(“bbb”) .append(“ccc”) .append(“ddd”) ;

String  data = sb.toString(); //data的结果为aaabbbcccddd

/*

* 链式调用

*/

public class Demo02 {

public static void main(String[] args) {

StringBuffer sb = new StringBuffer();

//  StringBuffer sb2 = sb.append("i love java ");

//  StringBuffer sb3 = sb2.append("i like java ");

//  StringBuffer sb4 = sb3.append("i enjoy java ");

// 

//  System.out.println(sb);

//  System.out.println(sb2);

//  System.out.println(sb3);

//  System.out.println(sb4);

sb.append("i love java").append("i like java ").append("i enjoy java");

System.out.println(sb);

}

}

你可能感兴趣的:(从屌丝到架构师的飞越(API篇)-StringBuffer类)