首页  /  世界杯意大利  /  Java 中 String、StringBuffer、StringBuilder 的使用方法及应用场景详解

Java 中 String、StringBuffer、StringBuilder 的使用方法及应用场景详解

世界杯意大利 6289

1. String类使用方法

String类提供了丰富的方法来操作字符串,以下是一些常用方法的示例:

代码语言:java复制// 创建字符串

String str = "Hello World";

// 获取字符串长度

int length = str.length(); // 返回11

// 字符串拼接

String newStr = str.concat("!"); // 返回"Hello World!"

// 字符串查找

int index = str.indexOf("World"); // 返回6

boolean contains = str.contains("Hello"); // 返回true

// 字符串截取

String substr = str.substring(6); // 返回"World"

// 字符串替换

String replaced = str.replace("World", "Java"); // 返回"Hello Java"

// 字符串大小写转换

String upper = str.toUpperCase(); // 返回"HELLO WORLD"

String lower = str.toLowerCase(); // 返回"hello world"

// 字符串分割

String[] parts = str.split(" "); // 返回["Hello", "World"]

// 字符串比较

boolean equals = str.equals("Hello World"); // 返回true

boolean ignoreCase = str.equalsIgnoreCase("hello world"); // 返回true2. StringBuffer使用方法StringBuffer是可变的字符串类,支持动态修改字符串内容:

代码语言:java复制// 创建StringBuffer对象

StringBuffer sb = new StringBuffer("Hello");

// 追加内容

sb.append(" World"); // sb内容变为"Hello World"

// 插入内容

sb.insert(5, ","); // sb内容变为"Hello, World"

// 删除内容

sb.delete(5, 6); // sb内容变回"Hello World"

// 替换内容

sb.replace(6, 11, "Java"); // sb内容变为"Hello Java"

// 反转字符串

sb.reverse(); // sb内容变为"avaJ olleH"

// 获取字符串长度

int length = sb.length(); // 返回10

// 转换为String

String result = sb.toString(); // 返回"avaJ olleH"3. StringBuilder使用方法StringBuilder的方法与StringBuffer基本相同,但不保证线程安全:

代码语言:java复制// 创建StringBuilder对象

StringBuilder sb = new StringBuilder("Hello");

// 追加内容

sb.append(" World"); // sb内容变为"Hello World"

// 插入内容

sb.insert(5, ","); // sb内容变为"Hello, World"

// 删除内容

sb.delete(5, 6); // sb内容变回"Hello World"

// 替换内容

sb.replace(6, 11, "Java"); // sb内容变为"Hello Java"

// 反转字符串

sb.reverse(); // sb内容变为"avaJ olleH"

// 获取字符串长度

int length = sb.length(); // 返回10

// 转换为String

String result = sb.toString(); // 返回"avaJ olleH"六、组件封装方法1. 字符串工具类封装下面是一个简单的字符串工具类封装,包含了一些常用的字符串操作方法:

代码语言:java复制public class StringUtils {

// 使用StringBuilder优化的字符串拼接方法

public static String join(String delimiter, String... elements) {

if (elements == null || elements.length == 0) {

return "";

}

StringBuilder sb = new StringBuilder();

sb.append(elements[0]);

for (int i = 1; i < elements.length; i++) {

sb.append(delimiter).append(elements[i]);

}

return sb.toString();

}

// 安全的字符串反转方法

public static String reverse(String str) {

if (str == null) {

return null;

}

return new StringBuilder(str).reverse().toString();

}

// 重复字符串n次

public static String repeat(String str, int times) {

if (str == null || times <= 0) {

return "";

}

StringBuilder sb = new StringBuilder(str.length() * times);

for (int i = 0; i < times; i++) {

sb.append(str);

}

return sb.toString();

}

// 移除字符串中的所有空格

public static String removeWhitespace(String str) {

if (str == null) {

return null;

}

return str.replaceAll("\\s+", "");

}

}2. 线程安全的日志组件封装下面是一个使用StringBuffer实现的线程安全日志组件:

代码语言:java复制public class Logger {

private final StringBuffer logBuffer = new StringBuffer();

private static final Logger INSTANCE = new Logger();

private Logger() {}

public static Logger getInstance() {

return INSTANCE;

}

public synchronized void log(String message) {

logBuffer.append(System.currentTimeMillis())

.append(": ")

.append(message)

.append("\n");

}

public synchronized void logError(String errorMessage) {

logBuffer.append(System.currentTimeMillis())

.append("[ERROR]: ")

.append(errorMessage)

.append("\n");

}

public synchronized String getLog() {

return logBuffer.toString();

}

public synchronized void clear() {

logBuffer.setLength(0);

}

}3. SQL构建器组件封装下面是一个使用StringBuilder实现的SQL构建器组件:

代码语言:java复制public class SQLBuilder {

private final StringBuilder sql = new StringBuilder();

public SQLBuilder select(String... columns) {

sql.append("SELECT ");

for (int i = 0; i < columns.length; i++) {

sql.append(columns[i]);

if (i < columns.length - 1) {

sql.append(", ");

}

}

return this;

}

public SQLBuilder from(String tableName) {

sql.append(" FROM ").append(tableName);

return this;

}

public SQLBuilder where(String condition) {

sql.append(" WHERE ").append(condition);

return this;

}

public SQLBuilder and(String condition) {

sql.append(" AND ").append(condition);

return this;

}

public SQLBuilder or(String condition) {

sql.append(" OR ").append(condition);

return this;

}

public SQLBuilder orderBy(String column, boolean ascending) {

sql.append(" ORDER BY ").append(column);

if (!ascending) {

sql.append(" DESC");

}

return this;

}

public String build() {

return sql.toString();

}

public void reset() {

sql.setLength(0);

}

}七、使用封装组件的示例1. 使用字符串工具类代码语言:java复制public class StringUtilsExample {

public static void main(String[] args) {

// 使用join方法拼接字符串

String joined = StringUtils.join(", ", "Apple", "Banana", "Cherry");

System.out.println(joined); // 输出: Apple, Banana, Cherry

// 使用reverse方法反转字符串

String reversed = StringUtils.reverse("Hello");

System.out.println(reversed); // 输出: olleH

// 使用repeat方法重复字符串

String repeated = StringUtils.repeat("abc", 3);

System.out.println(repeated); // 输出: abcabcabc

// 使用removeWhitespace方法移除空格

String noSpace = StringUtils.removeWhitespace(" Hello World ");

System.out.println(noSpace); // 输出: HelloWorld

}

}2. 使用日志组件代码语言:java复制public class LoggerExample {

public static void main(String[] args) {

Logger logger = Logger.getInstance();

// 记录普通日志

logger.log("程序启动");

// 模拟业务操作

try {

int result = 10 / 0;

} catch (Exception e) {

// 记录错误日志

logger.logError("发生异常: " + e.getMessage());

}

// 记录普通日志

logger.log("程序结束");

// 输出所有日志

System.out.println(logger.getLog());

}

}3. 使用SQL构建器代码语言:java复制public class SQLBuilderExample {

public static void main(String[] args) {

SQLBuilder builder = new SQLBuilder();

// 构建SQL查询

String sql = builder.select("id", "name", "age")

.from("users")

.where("age > 18")

.and("status = 'active'")

.orderBy("age", true)

.build();

System.out.println(sql);

// 输出: SELECT id, name, age FROM users WHERE age > 18 AND status = 'active' ORDER BY age ASC

// 重置构建器

builder.reset();

// 构建另一个查询

String anotherSql = builder.select("*")

.from("orders")

.where("amount > 1000")

.or("category = 'electronics'")

.orderBy("amount", false)

.build();

System.out.println(anotherSql);

// 输出: SELECT * FROM orders WHERE amount > 1000 OR category = 'electronics' ORDER BY amount DESC

}

}八、总结通过封装这些组件,我们可以更方便地使用String、StringBuffer和StringBuilder,同时隐藏底层实现细节,提高代码的复用性和可维护性。在实际开发中,应根据具体场景选择合适的字符串处理类,并合理封装以满足项目需求。

Java,String,StringBuffer,StringBuilder,Java 字符串,字符串操作,Java 开发,编程语言,编程技巧,字符串拼接,Java 基础,软件开发,Java 程序员,字符串处理,Java 应用场景