String学习总结
- 定义与初始化
- 字面量定义:可以直接使用双引号来定义一个字符串,例如
String str = "Hello";。这种方式创建的字符串对象存储在字符串常量池中。如果多个字符串字面量相同,它们会指向字符串常量池中的同一个对象,以节省内存。 - 使用
new关键字定义:也可以通过new关键字来创建字符串对象,如String str2 = new String("World");。这种方式会在堆内存中创建一个新的字符串对象,即使字符串内容与常量池中已有的相同。
- 字面量定义:可以直接使用双引号来定义一个字符串,例如
- 不可变性
- 含义:String对象一旦被创建,它的值就不能被改变。例如,当对一个已有字符串进行操作(如拼接、替换等)时,实际上是创建了一个新的字符串对象。
- 示例:
String str = "abc"; str = str + "def"; // 这里并不是修改了原来的"abc"对象,而是创建了一个新的字符串对象"abcdef"
- 常用方法
- 获取长度:使用
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"}三个元素。
- 使用
- 获取长度:使用
- 字符串与其他数据类型的转换
-
转换为其他数据类型:
- 转换为整数:可以使用
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();。
- 基本数据类型可以通过
-

浙公网安备 33010602011771号