- 作者:老汪软件技巧
- 发表时间:2023-12-30 21:00
- 浏览量:
目录
API 1.0 类概念
代表可变字符串对象,相当于一个容器,它装的字符串是可以改变的,就是用来操作字符串的。
对比与一般的 类 会更加好操作字符串,因为用 类型的字符串是不可变的,而 类型的字符串是可以改变的。
1. 类中构造器
可以通过两种形式来创建 类型的对象;分别是有参数构造器和无参数构造器。
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
//根据无参数构造器来创建对象,代表一开始就是空字符串“”
StringBuilder stringBuilder1 = new StringBuilder();
System.out.println(stringBuilder1);
//根据有参数构造器来创建对象,代表一开始就是有自定义的字符串
String str = "lisi";
StringBuilder stringBuilder2 = new StringBuilder(str);
System.out.println(stringBuilder2);
}
}
1. 类中()方法
添加数据任何数据并返回 类型对象本身。
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(11);
stringBuilder.append(2.2);
stringBuilder.append('a');
stringBuilder.append("lisi");
System.out.println(stringBuilder);
}
输出结果:
需要注意的是,每次添加完数据之后,返回来的是对象本身,不会创建新的对象。
1. 类中 () 方法
将对象的内容反转。
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(11);
stringBuilder.append(2.2);
stringBuilder.append('a');
stringBuilder.append("lisi");
System.out.println(stringBuilder);
stringBuilder.reverse();
System.out.println(stringBuilder);
}
运行结果如下:
同样需要注意的是,反转回来的也是对象本身,不会创建新的对象。
1. 类中 () 方法
返回对象的长度。
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(11);
stringBuilder.append(2.2);
stringBuilder.append('a');
stringBuilder.append("lisi");
System.out.println(stringBuilder);
stringBuilder.reverse();
System.out.println(stringBuilder);
//返回字符串个数
System.out.println(stringBuilder.length());
}
运行结果如下:
1. 类中 ()方法
将 类型的对象转变为 类型的对象。
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(11);
stringBuilder.append(2.2);
stringBuilder.append('a');
stringBuilder.append("lisi");
System.out.println(stringBuilder);
stringBuilder.reverse();
System.out.println(stringBuilder);
System.out.println(stringBuilder.length());
String s = stringBuilder.toString();
//先是 stringBuilder类 去调用静态 toString() 方法
//然后得到一个 toString 类型的字符串 ,然后用String 类型的变量 s 来接收
System.out.println(s.toString());
//然后s 对象去调用已经重写Object 中的toString() 方法
//最后输出内容:”isila2.211“ 这个字符串是不可以改变的
}
运行结果如下:
1.6为什么操作字符串的建议使用 类型 ,而不建议 类型?
最本质的原因就是, 类型的字符串 对字符串操作之后都会返回对象本身,不会创建新的对象,而 类型的字符串 每一次对字符串操作之后都会在栈区上 new 一个新的 类型的对象,所以操作 类型的字符串 的效率不如操作 类型的字符串。
举个例子来观察一下:
代码如下:
public class StringBuilderAppend {
public static void main(String[] args) {
String str = "";
int n = 10000000;
for (int i = 0; i < n; i++) {
str += "lisi";
}
System.out.println(str);
}
public class StringBuilderAppend {
public static void main(String[] args) {
StringBuilder str = new StringBuilder();
int n = 10000000;
for (int i = 0; i < n; i++) {
str.append("lisi");
}
System.out.println(str);
}
这两个代码,都可以在你的电脑去运行一下,看看第一个代码直到运行结束需要多长时间,而第二个代码几乎是眨几下眼的功夫就运行结束了。
1. 与 比较
类中的API 与 类API 用法是一摸一样的。 类和 类都是可变字符串类,它们的用途是为了处理字符串的拼接和修改操作。
类是线程安全的,可以被多个线程同时访问和修改,但是性能相对较低。它的方法都是同步的,也就是说在多线程环境下,每个方法都会被锁住,保证线程安全。
类是线程不安全的,只能被单个线程访问和修改,但是性能相对较高。它的方法没有进行同步,所以在单线程环境下可以获得更好的性能。
两者的使用方法几乎完全相同,都提供了一系列的方法用于字符串的操作,例如拼接、插入、删除、替换等。区别在于线程安全性和性能。如果在多线程环境下需要进行字符串操作,应该使用 类;如果在单线程环境下需要进行字符串操作,可以使用 类来获得更好的性能。