在 Java 中,创建字符串的方式主要有以下几种:
1. 使用字符串字面量
这是最常见的方式,使用双引号直接创建字符串:
String str1 = "Hello, World!";
特点:
- 字符串会存储在字符串常量池中。
- 如果常量池中已有相同值的字符串对象,则不会创建新对象,而是直接引用已有对象。
2. 使用 new
关键字
通过 new
显式创建字符串对象:
String str2 = new String("Hello, World!");
特点:
- 即使常量池中已有相同值的字符串,也会在堆内存中创建一个新的字符串对象。
- 不推荐用这种方式创建字符串,除非有特殊需求。
3. 使用 String
类的构造方法
可以通过多种构造函数来创建字符串,例如:
// 从字符数组创建字符串
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(chars);
// 从字节数组创建字符串
byte[] bytes = {72, 101, 108, 108, 111};
String str4 = new String(bytes);
特点:
- 适合需要对字符数组或字节数组进行转换时使用。
4. 使用 StringBuilder
或 StringBuffer
可以通过这些类先构造字符串,然后调用 toString()
方法创建最终的字符串:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!");
String str5 = sb.toString();
特点:
StringBuilder
是非线程安全的,性能更高。StringBuffer
是线程安全的,适合多线程环境。- 适合需要频繁拼接字符串时使用。
5. 通过其他类生成
例如,通过 String.valueOf()
、format()
、concat()
等方法:
// 使用 valueOf
int num = 123;
String str6 = String.valueOf(num);
// 使用 format
String str7 = String.format("Hello, %s!", "World");
// 使用 concat
String str8 = "Hello".concat(", World!");
特点:
- 通常用于格式化或将其他类型转换为字符串。
总结
字符串的创建方式应根据场景选择:
- 字符串常量:推荐直接使用字面量。
- 动态拼接:推荐使用
StringBuilder
。 - 特殊数据:可用构造函数或工具方法如
valueOf
和format
。