Java字符串案例如何常规操作

wen java案例 28

Java字符串常规操作案例

字符串声明与初始化

// 直接赋值
String str1 = "Hello World";
// 通过new关键字创建
String str2 = new String("Hello World");
// 字符数组转字符串
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray);
// 字节数组转字符串
byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray);

字符串长度与判断

String str = "Hello Java";
// 获取字符串长度
int length = str.length();  // 10
// 判断是否为空
boolean isEmpty = str.isEmpty();  // false
// 判断是否空白
boolean isBlank = str.isBlank();  // false

字符串比较

String str1 = "Hello";
String str2 = "hello";
String str3 = "Hello";
// equals() - 区分大小写比较
System.out.println(str1.equals(str2));  // false
System.out.println(str1.equals(str3));  // true
// equalsIgnoreCase() - 忽略大小写比较
System.out.println(str1.equalsIgnoreCase(str2));  // true
// compareTo() - 字典序比较
System.out.println(str1.compareTo(str2));  // 负数(H < h)
System.out.println(str1.compareTo(str3));  // 0
// == 比较引用地址(不推荐用于内容比较)
System.out.println(str1 == str3);  // true(字符串常量池)
System.out.println(str1 == new String("Hello"));  // false

字符串查找

String str = "Hello Java Programming";
// indexOf() - 查找字符/字符串第一次出现的位置
int index1 = str.indexOf('o');          // 4(从0开始)
int index2 = str.indexOf("Java");       // 6
int index3 = str.indexOf("Python");     // -1(未找到)
// lastIndexOf() - 查找最后一次出现的位置
int index4 = str.lastIndexOf('o');      // 错误示例,实际应为索引
int lastIndex = str.lastIndexOf('a');   // 15
// contains() - 是否包含子串
boolean hasJava = str.contains("Java");  // true
// startsWith() / endsWith() - 判断前缀后缀
boolean startHello = str.startsWith("Hello");  // true
boolean endIng = str.endsWith("ing");          // true

字符串截取与拼接

// 截取子串
String str = "Hello Java World";
// substring(beginIndex)
String sub1 = str.substring(6);       // "Java World"
// substring(beginIndex, endIndex)
String sub2 = str.substring(6, 10);   // "Java"(不包含endIndex)
// 字符串拼接
String s1 = "Hello";
String s2 = "World";
// 使用+运算符
String result1 = s1 + " " + s2;       // "Hello World"
// 使用concat()
String result2 = s1.concat(" ").concat(s2);  // "Hello World"
// 使用StringBuilder/StringBuffer(推荐循环拼接时使用)
StringBuilder sb = new StringBuilder();
sb.append(s1).append(" ").append(s2);
String result3 = sb.toString();       // "Hello World"
// join() - 使用分隔符合并字符串数组
String[] words = {"apple", "banana", "orange"};
String joined = String.join(", ", words);  // "apple, banana, orange"

字符串替换

String str = "Hello Java, Java is fun";
// replace() - 替换所有匹配字符
String replaced1 = str.replace('a', 'A');      // "Hello JAvA, JAvA is fun"
// replace() - 替换所有匹配字符串
String replaced2 = str.replace("Java", "Python");  // "Hello Python, Python is fun"
// replaceAll() - 支持正则表达式
String replaced3 = str.replaceAll("J[a-z]+", "PYTHON");  // "Hello PYTHON, PYTHON is fun"
// replaceFirst() - 只替换第一个匹配
String replaced4 = str.replaceFirst("Java", "Python");   // "Hello Python, Java is fun"

字符串分割与转换

// 字符串分割
String str = "apple,banana,orange,grape";
// split() - 返回字符串数组
String[] fruits = str.split(",");
// 结果:["apple", "banana", "orange", "grape"]
// 限制分割次数
String[] limited = str.split(",", 3);
// 结果:["apple", "banana", "orange,grape"]
// 大小写转换
String text = "Hello World";
String upper = text.toUpperCase();  // "HELLO WORLD"
String lower = text.toLowerCase();  // "hello world"
// 去除空白
String spaces = "  Hello World  ";
String trimmed = spaces.trim();          // "Hello World"
String stripped = spaces.strip();        // "Hello World"(支持Unicode)
String stripLeading = spaces.stripLeading();   // "Hello World  "
String stripTrailing = spaces.stripTrailing(); // "  Hello World"

字符串格式化

// String.format()
String name = "Alice";
int age = 25;
double score = 92.5;
String formatted = String.format("姓名:%s,年龄:%d,成绩:%.1f", name, age, score);
// 结果:"姓名:Alice,年龄:25,成绩:92.5"
// printf() - 直接打印到控制台
System.out.printf("数值:%10d%n", 255);        // "数值:       255"
System.out.printf("小数:%.2f%n", 3.14159);    // "小数:3.14"
System.out.printf("左对齐:%-10s%n", "Hello"); // "左对齐:Hello     "
// formatted() - Java 15+ 字符串模板
String msg = "Welcome %s to Java %d".formatted(name, 17);

字符数组与字符串互转

// 字符串转字符数组
String str = "Hello";
char[] charArray = str.toCharArray();
// charArray = {'H', 'e', 'l', 'l', 'o'}
// 字符数组转字符串
char[] chars = {'J', 'a', 'v', 'a'};
String fromChars = new String(chars);  // "Java"
// 字符串转字节数组
byte[] bytes = str.getBytes();  // 默认编码
byte[] utf8Bytes = str.getBytes(StandardCharsets.UTF_8);
byte[] gbkBytes = str.getBytes("GBK");

综合案例:字符串处理工具

public class StringUtils {
    // 反转字符串
    public static String reverse(String str) {
        return new StringBuilder(str).reverse().toString();
    }
    // 统计字符出现次数
    public static int countChar(String str, char target) {
        int count = 0;
        for (char c : str.toCharArray()) {
            if (c == target) {
                count++;
            }
        }
        return count;
    }
    // 判断是否为回文串
    public static boolean isPalindrome(String str) {
        String cleaned = str.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
        return cleaned.equals(new StringBuilder(cleaned).reverse().toString());
    }
    // 移除指定字符
    public static String removeChar(String str, char target) {
        return str.replace(String.valueOf(target), "");
    }
    // 首字母大写
    public static String capitalize(String str) {
        if (str == null || str.isEmpty()) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1);
    }
    public static void main(String[] args) {
        // 测试
        System.out.println(reverse("Hello"));                    // "olleH"
        System.out.println(countChar("Hello World", 'o'));      // 2
        System.out.println(isPalindrome("A man, a plan, a canal: Panama"));  // true
        System.out.println(removeChar("Hello World", 'l'));     // "Heo Word"
        System.out.println(capitalize("java"));                 // "Java"
    }
}

性能建议

  1. 字符串拼接优化

    Java字符串案例如何常规操作

    • 少量字符串:使用 运算符
    • 循环拼接:使用 StringBuilder(非线程安全)或 StringBuffer(线程安全)
    • Java 8+:字符串连接 String.join() 更高效
  2. 避免频繁创建字符串

    // 不推荐
    String result = "";
    for (int i = 0; i < 1000; i++) {
        result += i;  // 每次都会创建新对象
    }
    // 推荐
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 1000; i++) {
        sb.append(i);
    }
    String result = sb.toString();

这些是Java字符串操作中最常用的功能,掌握它们可以应对大多数字符串处理需求。

抱歉,评论功能暂时关闭!