在 Java 中,有以下两种方法可以创建字符串对象:
1. 直接使用字符串字面量来创建字符串对象
这是创建字符串对象最常见的方法。你只需要在代码中使用一对双引号包裹住字符串文本即可。例如:
String str1 = "Hello World!";
这种方法创建的字符串对象被称为字符串字面量,由 JVM 在运行期间创建和管理。相同的字符串字面量在 JVM 中只会被创建一次,即字符串的==运算比较返回true。
2. 使用 String 类的构造方法来创建字符串对象
你也可以使用带参数的String构造函数来创建一个字符串。例如:
String str2 = new String("Hello World!");
这种方法创建的字符串对象在堆中创建,并且不可共享。因此,相同文本的两个字符串对象使用==运算比较结果将返回 false。
- 需要注意的是,由于字符串是不可变对象,因此在创建 String 类型的实例后,无论使用哪种方法,都不会对原字符串对象的内容进行更改。如果对原字符串内容进行修改,必须创建一个新字符串对象并对其进行修改。
综上所述,使用字符串字面量创建字符串对象尤其方便,而使用 String 类构造方法则更加灵活,可以动态地构建字符串对象。在实际项目中,应根据需要选择最适合的字符串构造方法。
- new运算符创建的对象在堆内存中,而不是运行时常量池中。因此,在执行 == 运算时,如果两个字符串是用 new 运算符创建的,则会比较它们的地址而不是内容。所以在使用equals方法时应该小心,equals 方法比较的是字符串的内容而不是地址,因此两者的行为是不同的。此外,由于字符串是不可变对象,因此所有字符串对象的内容不可更改,任何对字符串的修改都会产生新的字符串对象。