首页 > Java > java 字符串类 常用方法

java 字符串类 常用方法

2025-01-25 16:12:37
在 Java 中,字符串是一个非常重要的数据类型,Java 提供了 StringStringBuilder 和 StringBuffer 这三个类来处理字符串,下面分别介绍这三个类,以及它们的创建方式和常用方法。

1. String 类

 

String 类是 Java 中用于表示字符串的不可变类,一旦创建,其内容不能被修改。

创建方式及不同

  • 直接赋值
  • String str1 = "Hello";
  • 这种方式会先在字符串常量池中查找是否存在值为 "Hello" 的字符串对象,如果存在,则直接将引用指向该对象;如果不存在,则在字符串常量池中创建一个新的 "Hello" 字符串对象。
  • 使用 new 关键字
  • String str2 = new String("World");
  • 这种方式会在堆内存中创建一个新的 String 对象,即使字符串常量池中已经存在相同内容的字符串对象。
  • 使用字符数组创建

    可以将字符数组转换为字符串对象。
  • public class StringCreationExample {
        public static void main(String[] args) {
            char[] charArray = {'H', 'e', 'l', 'l', 'o'};
            String str3 = new String(charArray);
            System.out.println(str3);
        }
    }
  • 使用字节数组创建

    可以将字节数组转换为字符串对象,常用于处理文件、网络传输等场景。
  • import java.nio.charset.StandardCharsets;
    
    public class StringCreationExample {
        public static void main(String[] args) {
            byte[] byteArray = "Hello, Java!".getBytes(StandardCharsets.UTF_8);
            String str4 = new String(byteArray, StandardCharsets.UTF_8);
            System.out.println(str4);
        }
    }
  • 字符串拼接创建

    通过 + 运算符或 concat 方法将多个字符串拼接成一个新的字符串。
  • public class StringCreationExample {
        public static void main(String[] args) {
            String part1 = "Hello";
            String part2 = ", Java!";
            String str5 = part1 + part2;
            System.out.println(str5);
    
            String str6 = part1.concat(part2);
            System.out.println(str6);
        }
    }

常用方法

public class StringExample {
    public static void main(String[] args) {
        String str = "Hello, World!";

        // 获取字符串长度
        int length = str.length();
        System.out.println("字符串长度: " + length);

        // 获取指定索引位置的字符
        char ch = str.charAt(7);
        System.out.println("索引 7 位置的字符: " + ch);

        // 字符串拼接
        String newStr = str.concat(" Welcome!");
        System.out.println("拼接后的字符串: " + newStr);

        // 判断字符串是否包含指定字符序列
        boolean contains = str.contains("World");
        System.out.println("是否包含 'World': " + contains);

        // 判断字符串是否以指定前缀开头
        boolean startsWith = str.startsWith("Hello");
        System.out.println("是否以 'Hello' 开头: " + startsWith);

        // 判断字符串是否以指定后缀结尾
        boolean endsWith = str.endsWith("!");
        System.out.println("是否以 '!' 结尾: " + endsWith);

        // 获取指定字符或字符串第一次出现的索引位置
        int index = str.indexOf("o");
        System.out.println("字符 'o' 第一次出现的索引: " + index);

        // 将字符串转换为大写
        String upperCase = str.toUpperCase();
        System.out.println("大写字符串: " + upperCase);

        // 将字符串转换为小写
        String lowerCase = str.toLowerCase();
        System.out.println("小写字符串: " + lowerCase);

        // 去除字符串前后的空格
        String trimmed = "  Hello  ".trim();
        System.out.println("去除前后空格后的字符串: " + trimmed);

        // 替换字符串中的指定字符或字符串
        String replaced = str.replace("World", "Java");
        System.out.println("替换后的字符串: " + replaced);

        // 分割字符串
        String[] parts = str.split(", ");
        for (String part : parts) {
            System.out.println("分割后的部分: " + part);
        }
    }
}

2. StringBuilder

StringBuilder 是一个可变的字符序列,线程不安全,适用于单线程环境下的字符串拼接等操作。

创建方式

StringBuilder sb1 = new StringBuilder(); // 创建一个空的 StringBuilder 对象
StringBuilder sb2 = new StringBuilder("Hello"); // 创建一个包含指定字符串的 StringBuilder 对象

常用方法

public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");

        // 追加字符串
        sb.append(", World!");
        System.out.println("追加后的字符串: " + sb.toString());

        // 插入字符串
        sb.insert(5, " Java");
        System.out.println("插入后的字符串: " + sb.toString());

        // 删除指定范围的字符
        sb.delete(5, 10);
        System.out.println("删除后的字符串: " + sb.toString());

        // 反转字符串
        sb.reverse();
        System.out.println("反转后的字符串: " + sb.toString());
    }
}

3. StringBuffer

StringBuffer 也是一个可变的字符序列,线程安全,适用于多线程环境下的字符串拼接等操作。
创建方式
StringBuffer sb1 = new StringBuffer(); // 创建一个空的 StringBuffer 对象
StringBuffer sb2 = new StringBuffer("Hello"); // 创建一个包含指定字符串的 StringBuffer 对象

常用方法

StringBuffer 的常用方法和 StringBuilder 基本相同,只是 StringBuffer 的方法是线程安全的。
public class StringBufferExample {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hello");

        // 追加字符串
        sb.append(", World!");
        System.out.println("追加后的字符串: " + sb.toString());

        // 插入字符串
        sb.insert(5, " Java");
        System.out.println("插入后的字符串: " + sb.toString());

        // 删除指定范围的字符
        sb.delete(5, 10);
        System.out.println("删除后的字符串: " + sb.toString());

        // 反转字符串
        sb.reverse();
        System.out.println("反转后的字符串: " + sb.toString());
    }
}
综上所述,String 适用于字符串内容不经常改变的场景;StringBuilder 适用于单线程环境下字符串内容经常改变的场景;StringBuffer 适用于多线程环境下字符串内容经常改变的场景。
 
使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top