1. String类使用方法
String类提供了丰富的方法来操作字符串,以下是一些常用方法的示例:
// 创建字符串
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"); // 返回true
2. StringBuffer使用方法
StringBuffer是可变的字符串类,支持动态修改字符串内容:
// 创建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基本相同,但不保证线程安全:
// 创建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. 字符串工具类封装
下面是一个简单的字符串工具类封装,包含了一些常用的字符串操作方法:
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实现的线程安全日志组件:
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构建器组件:
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. 使用字符串工具类
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. 使用日志组件
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构建器
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,同时隐藏底层实现细节,提高代码的复用性和可维护性。在实际开发中,应根据具体场景选择合适的字符串处理类,并合理封装以满足项目需求。
关注我获取更多内容