跳转至

字符串类型及运算

Java中的字符串(String)是一个不可变的字符序列,是Java中最常用的引用类型之一,用于存储和操作文本数据。

作用

字符串在Java中具有重要作用:

  1. 存储和操作文本数据
  2. 处理用户输入和输出
  3. 实现字符串匹配和搜索
  4. 进行文本解析和处理
  5. 构建和格式化消息

详细说明

Java字符串的主要特性:

  1. 基本特性:

    • 不可变性:创建后内容不可改变
    • 字符串常量池:共享相同字符串
    • 引用类型:存储在堆内存中
  2. 字符串操作:

    • 创建:字面量或构造器
    • 连接:+运算符或concat()方法
    • 比较:equals()或compareTo()
    • 查找:indexOf()或contains()
    • 截取:substring()
  3. 字符串方法:

    • 长度:length()
    • 转换:toUpperCase()/toLowerCase()
    • 替换:replace()/replaceAll()
    • 分割:split()
    • 格式化:format()

例子

public class StringDemo {
    public static void main(String[] args) {
        // 字符串创建
        String str1 = "Hello";
        String str2 = new String("World");

        // 字符串连接
        String result = str1 + " " + str2;
        System.out.println("连接结果: " + result);

        // 字符串方法
        System.out.println("长度: " + result.length());
        System.out.println("大写: " + result.toUpperCase());
        System.out.println("小写: " + result.toLowerCase());
        System.out.println("包含'World': " + result.contains("World"));

        // 字符串分割
        String[] words = result.split(" ");
        for(String word : words) {
            System.out.println("分割单词: " + word);
        }

        // 字符串比较
        String s1 = "Java";
        String s2 = "java";
        System.out.println("相等比较: " + s1.equals(s2));
        System.out.println("忽略大小写比较: " + s1.equalsIgnoreCase(s2));

        // 字符串截取
        String sub = result.substring(0, 5);
        System.out.println("截取结果: " + sub);

        // 字符串替换
        String replaced = result.replace("World", "Java");
        System.out.println("替换结果: " + replaced);

        // 字符串格式化
        String formatted = String.format("格式化: %s, 数字: %d", "测试", 100);
        System.out.println(formatted);
    }
}

注意事项

  1. 字符串比较必须使用equals()方法,不要使用==
  2. 字符串是不可变的,每次修改都会创建新对象
  3. 注意字符串的null值处理,例如:
    String str = null;
    if (str != null && str.equals("example")) {
        System.out.println("字符串匹配");
    } else {
        System.out.println("字符串为null或不匹配");
    }