java的String类
文章目录
- java的StringBuilder类
- StringBuilder类
- StringBuilder和StringBuffer类中的常用方法
- StringBuilder和StringBuffer的区别和联系
java的StringBuilder类
StringBuilder类
JDK中对StringBuilder类的基本介绍如下:
StringBuilder类在java.lang中,众所周知,在java.lang下的所有类都是可以直接调用的,不需要导包
接下来看一下StringBuilder类实现的构造器:
StringBuilder类中有无参和带参构造器,下面就举栗子说明一下吧:
package Test;
public class Test13 {
public static void main(String[] args) {
//创建StringBuilder的对象
StringBuilder stringBuilder3 = new StringBuilder();
//表面上调用的是StringBuilder的空构造器,实际底层上是对value数组进行初始化,长度为16
StringBuilder stringBuilder2 = new StringBuilder(3);
//表面上调用的是StringBuilder的有参构造器,。传入一个int类型的数据,实际底层上就是对value数组进行初始化,长度为你传入的数字
StringBuilder stringBuilder = new StringBuilder("ABC");
System.out.println(stringBuilder.append("def").append("aaaaaaaa").append("bbb").append("ooooo").toString());//链表调用的方式
}
}
- StringBuilder类下的append方法
public StringBuilder append(String str) {
super.append(str);
return this;
}
说明:将布尔参数的字符串表示形式追加到序列中。
String是不可变字符串,不可变指的是在地址不变的情况下,把"abc"变成"abcdef"是不可能的
StringBuilder是可变字符串,在StringBuilder这个对象的地址不变的情况下,想把"abc"变成"abcdef"是可能的,直接追加即可
package Test;
public class Test14 {
public static void main(String[] args) {
StringBuilder sb= new StringBuilder();
System.out.println(sb.append("abc") == sb.append("def"));
}
}
StringBuilder和StringBuffer类中的常用方法
方法名 | 说明 | 返回值 |
append() | 将布尔参数的字符串表示形式追加到序列中。 | 返回一个StringBuilder类型的值 |
delete() | 删除此序列的子字符串中的字符,左闭右开 | 返回一个StringBuilder类型的值 |
deleteCharAt() | 按此顺序删除指定位置的char。 | 返回一个StringBuilder类型的值 |
insert() | 将布尔参数的字符串表示形式插入此序列中。 | 返回一个StringBuilder类型的值 |
replace() | 用指定字符串中的字符替换此序列的子字符串中的字符。 | 返回一个StringBuilder类型的值 |
setCharAt(int index, char ch) | 指定索引处的字符设置为传入的参数 | 返回一个StringBuilder类型的值 |
length() | 返回字符串的长度 | 返回int类型的值 |
substring() | 返回一个新的String,该字符串包含此字符序列中当前包含的字符的子序列。 | 返回String类型的值 |
package Test;
public class Test15 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("nihaojavasdfafasdfasdf");
//增
sb.append("这是梦想");
System.out.println(sb);
//删
sb.delete(3, 6);//删除位置在[3,6)上的字符
System.out.println(sb);
sb.deleteCharAt(16);//删除位置在16上的字符
System.out.println(sb);
//改-->插入
StringBuilder sb1 = new StringBuilder("$2345234536567575677567asdfasdf");
sb1.insert(3, ",");//在下标为3的位置上插入,
System.out.println(sb1);
StringBuilder sb2 = new StringBuilder("$2342354wsfdasdfasdfasdfasdf");
//改-->替换
sb2.replace(3, 5, "你好呀");//在下标[3,5)位置上插入字符串
System.out.println(sb2);
sb.setCharAt(3, '!');
System.out.println(sb);
//查
StringBuilder sb3 = new StringBuilder("asdfasdf");
for (int i = 0; i < sb3.length(); i++) {
System.out.println(sb3.charAt(i) + "\t");
}
System.out.println();
//截取
String str = sb3.substring(2, 4);//截取[2,4)返回的是一个新的String,对StringBuilder没有影响
System.out.println(str);
System.out.println(sb3);
}
}
StringBuilder和StringBuffer的区别和联系
String类是一个不可变类,一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁
StringBuffer类则代表一个字符序列可变的字符串,可以通过append insert reverse setCharAt setLength等方法改变其内容,一旦生成了最终的字符串,调用toString方法将其转变为String
jdk1.5新增了一个StringBuilder类,和StringBuffer相似,构造方法和方法基本很相同,不同的是StringBuffer是线程安全的,而StringBuilder是线程不安全的,所以性能高,通常情况下,创建一个内容可变的字符串,应该优先考虑使用StringBuilder
java的抽象类