概述
Java创建String字符串有两种方式:
- 直接创建,存储在公共池,创建前会先检查公共池中是否已经存在相等的字符串,已存在就不会创建了直接引用已经存在的
- 通过new来创建,存储在堆上,无论是否已经存在相等的字符串,都会创建一个新的字符串
代码实现
直接创建
1 2
| String str1 = "a"; String str2 = "a";
|
通过new来创建
1 2
| String str4 = new String("a"); String str5 = new String("a");
|
对比
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class Main {
public static void main(String[] args) { String str1 = "a"; String str2 = "a"; String str3 = str2; String str4 = new String("a"); String str5 = new String("a"); String str6 = str5; System.out.println(str1 == str2); System.out.println(str2 == str3); System.out.println(str3 == str4); System.out.println(str4 == str5); System.out.println(str5 == str6); } }
|
结果截图
分析图解
指向同一个的比较结果是true,反之则为false