StringBuilder类及常用的方法

StringBuilder类及常用的方法

StringBuilder类的概述

StringBuilder:是一个可变的字符串类,也是字符串缓冲区类StringBuilder可以拼接字符串,每次都是同一个对象,效率更高StringBuilder是一个容器,它的容器理论值(当前容量)16
StringBuilder创建对象格式:StringBuilder 对象名 = new StringBuilder();
StringBuilder 对象名 = new StringBuilder(“abc”);

对比String拼接字符串和StringBuilder拼接字符串,String拼接字
符串耗费内存,每次拼接都会产生新的字符串对象,而
StringBuilder来拼接字符串始终都是同一个StringBuilder对象。

StringBuilder类的方法

StringBuilder():构造一个没有字符的字符串构建器,初始容量为16个字符
StringBuilder(String s):构造一个初始化为指定字符串内容的字符串构建器
int capacity(): 返回当前容量 初始容量为16个字符
int length():返回字符串的长度
append():追加字符串,相当于拼接字符串
insert(int offset, char c) :从下标offset处插入字符c
reverse() 反转字符串
delete(int start, int end):删除 [start,end) 之间的字符
deleteCharAt(int index):删除 index 位置字符
setCharAt(int index, char ch):替换 index 位置字符

setLength(int newLength):设置当前字符序列的长度为
newLength
replace(int start, int end, String str):替换 [start,end) 范围的字符序列为 str

public static void main(String[] args) {
String s = "hello";
// 第一次拼接
s = s + "world";
System.out.println(s);
// 第二次拼接
s = s + " java";
System.out.println(s);
// 实际上每次拼接都会产生新的字符串对象
// 创建StringBuilder
StringBuilder sb = new StringBuilder();
// capacity():返回当前容量。 16
System.out.println(sb.capacity()); // 16
StringBuilder sb2 = new
StringBuilder("abc");
System.out.println(sb2.capacity()); // 19
System.out.println(sb2.length()); // 3
sb2.append("ed").append("fg").append("h");
System.out.println(sb2); // abcedfgh
// insert(int offset, char c) :从下标offset处
插入字符c
sb2.insert(3,'0');
System.out.println(sb2);
sb2.reverse();
System.out.println(sb2);
}

StringBuilder与String转换

用instanceof关键字判断属于哪种数据类型
public static void main(String[] args) {
String str = "abc";
StringBuilder sb = new StringBuilder("abc");
if( str instanceof String){
System.out.println(true);
}else{
System.out.println(false);
}
if( sb instanceof StringBuilder){
System.out.println(true);
}else{
System.out.println(false);
}
}
String str = "abc";
// String==>StringBuilder
StringBuilder sb = new StringBuilder(str);
sb.append("ed").append("fg");
System.out.println("==================");
// StringBuilder==>String
/*if(sb.toString() instanceof String){
System.out.println(true);
}*/
if(""+sb instanceof String){
System.out.println(true);
}
面试题:String、StringBuilder和StringBuffer的区别?

String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
1、相同点:
它们都可以储存和操作字符串,同时三者都使用final修饰,都属于终结类不能派生子类,操作的相关方法也类似例如获取字符串长度等;
2、不同点:
其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的,而StringBuffer和StringBuilder类表示的字符串对象可以直接进行修改,在修改的同时地址值不会发生改变。StringBuilder是JDK 1.5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer略高。在此重点说明一下,String、StringBuffer、StringBuilder三者类型不一样,无法使用equals()方法比较其字符串内容是否一样!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值