- Java数据类型简介
- 原始数据类型
- 包装
- 使用
- 字符串
- 数组
Java StringBuilder和StringBuffer用法
StringBuilder
和StringBuffer
是String
类的同伴类。它们表示一个可变的字符序列。StringBuffer
是线程安全的,StringBuilder
不是线程安全的。
两个类都有相同的方法,除了StringBuffer
中的所有方法都是同步的。StringBuilder
对象是可修改的字符串。StringBuilder
类包含四个构造函数:
StringBuilder() StringBuilder(CharSequence seq) StringBuilder(int capacity) StringBuilder(String str)
无参数构造函数创建一个默认容量为16
的空StringBuilder
对象。第二个构造函数使用CharSequence
对象作为参数。它创建一个StringBuilder
对象,其内容与指定的CharSequence
相同。
第三个构造函数使用int
作为参数; 它创建一个空的StringBuilder
对象,其初始容量与指定的参数相同。
以下是创建StringBuilder
对象的一些示例:
StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder("Here is the content"); StringBuilder sb3 = new StringBuilder(200);
append()
方法将文本添加到StringBuilder
的结尾处。它可使用多种类型的参数。insert()
和delete()
用于修改字符串的内容。
长度和容量
StringBuilder
类有两个属性:length
和capacity
。它的长度是指其内容的长度,而其容量是指它可以容纳而不分配新的内存的最大字符数。length()
和capacity()
方法分别返回其长度和容量。例如,
public class Main { public static void main(String[] args) { StringBuilder sb = new StringBuilder(200); // Capacity:200, length:0 sb.append("Hello"); // Capacity:200, length:5 int len = sb.length(); // len is assigned 5 int capacity = sb.capacity(); // capacity is assigned 200 } }
转换为字符串
可以通过使用toString()
方法将StringBuilder
的内容作为String
类型的字符串值。
public class Main { public static void main(String[] args) { // Create a String object String s1 = new String("Hello"); // Create a StringBuilder from of the String object s1 StringBuilder sb = new StringBuilder(s1); // Append " Java" to the StringBuilder's content sb.append(" Java"); // Now, sb contains "Hello Java" // Get a String from the StringBuilder String s2 = sb.toString(); // s2 contains "Hello Java" } }
StringBuilder
有一个setLength()
方法,它的新长度作为参数。如果新长度大于旧长度,则额外位置(多过的部分)用空字符填充(空字符为\u0000
)。
如果新长度小于旧长度,则其内容将被截断以适应新长度。
public class Main { public static void main(String[] args) { // Length is 5 StringBuilder sb = new StringBuilder("Hello"); // Now the length is 7 with last two characters as null character '\u0000' sb.setLength(7); // Now the length is 2 and the content is "He" sb.setLength(2); } }
示例
StringBuilder
类有一个reverse()
方法,它用相同的字符序列替换其内容,但顺序相反。以下代码显示了StringBuilder
类的一些方法的使用。
public class Main { public static void main(String[] args) { // Create an empty StringBuffer StringBuilder sb = new StringBuilder(); printDetails(sb); // Append "good" sb.append("good"); printDetails(sb); // Insert "Hi " in the beginning sb.insert(0, "Hi "); printDetails(sb); // Delete the first o sb.deleteCharAt(1); printDetails(sb); // Append " be with you" sb.append(" be with you"); printDetails(sb); // Set the length to 3 sb.setLength(3); printDetails(sb); // Reverse the content sb.reverse(); printDetails(sb); } public static void printDetails(StringBuilder sb) { System.out.println("Content: \"" + sb + "\""); System.out.println("Length: " + sb.length()); System.out.println("Capacity: " + sb.capacity()); // Print an empty line to separate results System.out.println(); } }
上面的代码生成以下结果。
Content: "" Length: 0 Capacity: 16 Content: "good" Length: 4 Capacity: 16 Content: "Hi good" Length: 7 Capacity: 16 Content: "H good" Length: 6 Capacity: 16 Content: "H good be with you" Length: 20 Capacity: 34 Content: "H g" Length: 3 Capacity: 34 Content: "g H" Length: 3 Capacity: 34
字符串连接运算符(+)
在开发过程中,也经常使用+
运算符将字符串,原始类型值或对象连接成另一个字符串。
例如,
String str = "X" + "Y" + 12.56;
为了优化字符串连接操作,编译器用一个使用StringBuilder
的语句替换字符串连接。
String str = new StringBuilder().append("X").append("Y").append(12.56).toString();
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王