String学习总结

  1. 定义与初始化
    • 字面量定义:可以直接使用双引号来定义一个字符串,例如String str = "Hello";。这种方式创建的字符串对象存储在字符串常量池中。如果多个字符串字面量相同,它们会指向字符串常量池中的同一个对象,以节省内存。
    • 使用new关键字定义:也可以通过new关键字来创建字符串对象,如String str2 = new String("World");。这种方式会在堆内存中创建一个新的字符串对象,即使字符串内容与常量池中已有的相同。
  2. 不可变性
    • 含义:String对象一旦被创建,它的值就不能被改变。例如,当对一个已有字符串进行操作(如拼接、替换等)时,实际上是创建了一个新的字符串对象。
    • 示例
      String str = "abc";
      str = str + "def";
      // 这里并不是修改了原来的"abc"对象,而是创建了一个新的字符串对象"abcdef"
      
  3. 常用方法
    • 获取长度:使用length()方法可以获取字符串的长度,例如String str = "Java"; int len = str.length();,这里len的值为4。
    • 字符获取与遍历
      • 可以使用charAt(int index)方法获取指定索引位置的字符。例如String str = "Hello"; char c = str.charAt(1);,这里c的值为'e'。
      • 也可以使用循环来遍历字符串中的字符,如:
        String str = "World";
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            System.out.println(ch);
        }
        
    • 字符串拼接
      • 使用+运算符可以拼接字符串,例如String str1 = "Hello"; String str2 = "World"; String result = str1 + " " + str2;,这里result的值为"Hello World"
      • 还可以使用concat()方法进行拼接,如String str3 = "Java"; String str4 = str3.concat(" is great");str4的值为"Java is great"
    • 字符串比较
      • equals()方法用于比较两个字符串的内容是否相同。例如String str1 = "abc"; String str2 = "abc"; boolean isEqual = str1.equals(str2);,这里isEqual的值为true。需要注意的是,==运算符比较的是两个对象的引用是否相同,对于字符串字面量,如果它们在常量池中相同,则==也可能返回true,但对于通过new创建的字符串对象,即使内容相同,==通常也会返回false
      • equalsIgnoreCase()方法用于忽略大小写比较字符串内容,例如String str3 = "ABC"; String str4 = "abc"; boolean isEqualIgnoreCase = str3.equalsIgnoreCase(str4);,这里isEqualIgnoreCase的值为true
    • 子串提取
      • 使用substring(int beginIndex)方法可以从指定索引位置开始提取子串,直到字符串末尾。例如String str = "Java is cool"; String subStr1 = str.substring(5);subStr1的值为"is cool"
      • substring(int beginIndex, int endIndex)方法可以提取从beginIndex(包含)到endIndex(不包含)之间的子串。例如String subStr2 = str.substring(0, 4);subStr2的值为"Java"
    • 字符串替换
      • replace(char oldChar, char newChar)方法可以将字符串中的指定字符替换为新的字符。例如String str = "apple"; String newStr = str.replace('p', 'x');newStr的值为"axxle"
      • replaceAll(String regex, String replacement)方法可以使用正则表达式来替换字符串中的内容。例如String str2 = "abc123def"; String newStr2 = str2.replaceAll("\\d", "X");newStr2的值为"abcXXXdef"
    • 字符串分割
      • 使用split(String regex)方法可以根据指定的正则表达式来分割字符串。例如String str = "a,b,c"; String[] parts = str.split(",");,这里parts数组包含{"a", "b", "c"}三个元素。
  4. 字符串与其他数据类型的转换
    • 转换为其他数据类型

      • 转换为整数:可以使用Integer.parseInt(String s)方法将字符串转换为整数,例如String numStr = "123"; int num = Integer.parseInt(numStr);。需要注意的是,如果字符串内容不是合法的整数格式,会抛出NumberFormatException异常。
      • 转换为浮点数:类似地,Double.parseDouble(String s)方法可以将字符串转换为双精度浮点数。
    • 其他数据类型转换为字符串

      • 基本数据类型可以通过String.valueOf()方法转换为字符串,例如int i = 10; String str = String.valueOf(i);。对于对象,调用toString()方法(如果没有重写toString()方法,则会返回对象的默认字符串表示形式)也可以将其转换为字符串。例如Object obj = new Object(); String objStr = obj.toString();
posted @ 2024-11-01 21:06  最爱菠萝  阅读(3)  评论(0编辑  收藏  举报