常用类之StringBuilder类
StringBulider 类:也是一个字符串类.是一个可变的字符序列,在类中提供了可以改变字符串内容的常用的方法。
StringBulider 和 String 类的区别:
1.String是一个不可变的字符序列,没有提供修改字符串内容的方法。String长度不可以发生变化的。
2.StringBulider 是一个可变的字符序列,允许在原来的基础上对字符串的内容进行修改。StringBuilder长度可以改变,可以认为StringBuilder是一个可以伸缩的容器,用于存储字符串
StringBuilder构造方法
1、构造方法作用:创建当前对象,将其他类型的数据,转换成当前类型
2、StringBuilder构造方法
StringBuilder();创建一个生成器,默认的容器大小是16
StringBuilder(int capacity);创建一个生成器,初始容量大小为capacity
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。
3、获取容积的方法
capacity()返回当前的容量 获取的是当前生成器中容器的大小
length()返回的是当前生成器中字符的个数
StringBuilder中的添加方法
1、append()可以将任意的类型,转成字符,添加到生成器中
2、insert(int index,任意类型)方法,可以将任意的数据类型添加到指定的位置
StringBuilder中的删除方法
1、deleteCharAt() 移除此字符串指定位置上的 char(字符)
2、delete(int start ,int end) 删除指定范围内的字符。 包含头不包含尾
StringBuilder替换和反转方法
1、replace(int start,int end,String str)使用给定 String 中的字符替换此序列的子字符串中的字符。
2、reverse();将原有字符串进行反转
package com.ujiuye.Demos;
public class Demo_4 {
//StringBuilder的反转和替换
public static void main(String[] args) {
// StringBuilder,反转
String str = "123456789";
StringBuilder sb1 = new StringBuilder(str);
sb1.reverse();
System.out.println(sb1);
// 将stringBuilde类型的转成String类型
String string = sb1.toString();
System.out.println(string);
// StringBuilder,替换
StringBuilder sb2 = new StringBuilder("Hello World");
sb2.replace(6, 11, "java");
System.out.println(sb2);
}
//拓展:
private static void stringReverse() {
//String类型的反转
String str = "abcdefg";
// 将字符串转成字符数组
char[] chs = str.toCharArray();
for (int i = 0, j = chs.length - 1; i < j; i++,j--) {
char temp = chs[i];
chs[i] = chs[j];
chs[j] = temp;
}
// 将字符数组转为字符串
String str1 = new String(chs);
System.out.println(str1);
}
}
StringBuilder和StringBuffer 的区别
共同点:都是可变的字符串,都具有缓冲功能.
不同点:
(1):出现的版本的时间
StringBuffer 在 jdk 1.0 出现的
StringBuilder 在jdk 5.0 出现的
(2):线程安全性来说 ---- 在线程的时候将
StringBuffer 线程安全的,在多线程并发的情况下可以保证数据是正确的
StringBuilder 线程不安全的,在多线程并发的情况下不可以保证数据是正确的
(3): 效率
StringBuffer:效率低
StringBuilder:效率高
String和StringBuilder作为方法的参数
1、String作为方法的参数进行传递,无法修改原值,在被调用的方法中,修改引用指向的对象,和主方法中的引用是无关的。
2、StringBuilder作为方法的参数进行传递,如果在被调用的方法中,修改的是StringBuilder的引用,那么不会改变 主方法中原有对象的数据
3、StringBuilder作为方法的参数,在被调用的方法中,通过该引用修改了对象的数据