```markdown
在 Java 编程语言中,String
是一种特殊的数据类型,表示一个字符序列。它是用于存储和操作文本数据的常用数据类型。虽然 String
本质上是一个对象,但它具有一些与基本数据类型相似的特性。
String
是 Java 中的一个类,位于 java.lang
包下。它用于表示一系列字符。不同于大多数对象,String
是不可变的,也就是说一旦创建,String
的内容就不能被修改。
Java 中的 String
会被存储在一个叫做 字符串常量池 的地方。每当创建一个新的 String
对象时,JVM 会检查池中是否已经有相同的字符串,如果有,则返回池中的实例,否则会将其添加到池中。
这种机制可以减少内存的使用,避免重复创建相同内容的字符串。
最常见的创建字符串的方法是通过字面量方式:
java
String str = "Hello, World!";
new
关键字创建另外,也可以使用 new
关键字显式创建一个 String
对象:
java
String str = new String("Hello, World!");
使用 new
创建时,即使常量池中已有相同的字符串,JVM 也会创建一个新的 String
对象。
length()
返回字符串的长度(字符数)。
java
String str = "Hello";
int len = str.length(); // 结果为 5
charAt()
返回指定位置的字符。
java
String str = "Hello";
char c = str.charAt(1); // 结果为 'e'
substring()
提取字符串的子串。
java
String str = "Hello, World!";
String subStr = str.substring(7); // 结果为 "World!"
equals()
比较两个字符串的内容是否相等。
java
String str1 = "Hello";
String str2 = "Hello";
boolean isEqual = str1.equals(str2); // 结果为 true
toLowerCase()
和 toUpperCase()
将字符串转换为小写或大写。
java
String str = "Hello";
String lowerStr = str.toLowerCase(); // 结果为 "hello"
String upperStr = str.toUpperCase(); // 结果为 "HELLO"
trim()
去除字符串两端的空白字符。
java
String str = " Hello ";
String trimmedStr = str.trim(); // 结果为 "Hello"
contains()
检查字符串是否包含指定的子串。
java
String str = "Hello, World!";
boolean contains = str.contains("World"); // 结果为 true
Java 提供了将基本数据类型与 String
进行转换的功能。
通过 String.valueOf()
或直接使用 +
运算符,可以将基本数据类型转换为字符串。
java
int num = 100;
String str = String.valueOf(num); // 结果为 "100"
通过 Integer.parseInt()
等方法可以将字符串转换为基本数据类型。
java
String str = "123";
int num = Integer.parseInt(str); // 结果为 123
String
是不可变的,这意味着一旦创建,字符串的内容就不能被改变。例如:
java
String str = "Hello";
str = str + " World"; // 实际上是创建了一个新的字符串 "Hello World"
每次对 String
进行修改时,都会创建一个新的对象,而不会修改原有的字符串。
虽然 String
是不可变的,但如果需要频繁修改字符串内容,可以使用 StringBuilder
或 StringBuffer
。这两者都提供了可变的字符序列,可以在内存中修改而不会创建新的对象。
StringBuilder
是线程不安全的,但性能较高。StringBuffer
是线程安全的,但性能稍逊。String
是 Java 中用于表示文本的类。String
对象是不可变的。String
类型,如查找、替换、分割等。StringBuilder
和 StringBuffer
提供了更好的性能。通过理解 String
的特性与使用方法,我们可以更高效地进行文本处理和字符串操作。
```