StringBuilder类的方法

StringBuilder类简介

(1)StringBuilder 最早出现在JDK1.5,是一个字符拼接的工具类,它和StringBuffer一样都继承自父类AbstractStringBuilder, 在AbstractStringBuilder中使用char[] value字符数组保存字符串,但是没有用final关键字修饰,所以StringBuilder是可变的。
(2)……

性能

StringBuilder 对字符串的操作是直接改变字符串对象本身,而不是生成新的对象,所以新能开销小。
与StringBuffer相比StringBuilder的性能略高(15%~30%),StringBuffer为保证多线程情况下的安全性(synchronize加锁)而牺牲了性能,以时间来换取安全。而StringBuilder则没有保证线程的安全,从而性能略高于StringBuffer。

使用场景

频繁使用字符串拼接的时候可以用StringBuilder(推荐)或者StringBuffer。

StringBuilder对象的创建

  • 常规创建
    StringBuilder builder = new StringBuilder();

  • 在创建的时候添加初始字符串
    StringBuilder builder = new StringBuilder("abc");

  • 在创建的时候添加初始长度
    StringBuilder builder = new StringBuilder(初始长度);

StringBuilder方法 – 可以作为栈来使用!

builder.length();
builder.append(str); // 追加数据;
builder.append(c); // 追加数据;

builder.insert(offset, str); // 向指定位置插入数据;
builder.insert(offset, c);

builder.setCharAt(i, c);
builder.deleteCharAt(i); // 删除指定位置的数据;
builder.delete(beginIdx, endIndex);; // 删除指定范围的数据[startIdx, endIdx-1];

builder.toString(); //将对象中的数据以字符串的形式返回;
builder.reverse(); // 将对象中的数据反转

//Java StringBuilder
builder.append("just"); //在加入新字符串时,不会在内存中新开辟字符串空间,只是给原有的字符串尾部加入新字符串
builder.insert(0, "you");
builder.deleteCharAt(index);
builder.delete(beginIdx, endIndex); //删除[startIdx, endIdx-1]的内容,并返回this
builder.toString();
builder.reverse();

builder.delete(0, deleteMethod.length());  // StringBuilder清空!
builder.setLength(0);  // 更优!

附录:《Java核心技术 卷I》11版 p54


StringBuilder(): 构造一个空的字符串构建器。

int length(): 返回构建器或缓冲器中的代码单元数量。

StringBuilder append(string str): 追加一个字符串,并返回this。
例如:res.append(str[2] + '-');

StringBuilder append(char c): 追加一个代码单元,并返回thisStringBuilder appendCodePoint(int cp):

void setCharAt(int i, char c):

StringBuilder insert(int offset, String str):

StringBuilder insert(int offset, char c):

StringBuilder delete(int startIdx, int endIdx):

String toString():

————

// 下面哪里出错了?
StringBuilder str1 = "aaaaa"; 
str1.charAt(0) = Character.toUpperCase(str1.charAt(0)); 

在这段代码中,出错的地方是StringBuilder str1 = "aaaaa";。因为"aaaaa"是一个字符串常量,不能直接赋值给StringBuilder类型的变量。

StringBuilder str1 = new StringBuilder();
str1.append("aaaaa");
str1.setCharAt(0, Character.toUpperCase(str1.charAt(0)));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值