概述

Java创建String字符串有两种方式:

  1. 直接创建,存储在公共池,创建前会先检查公共池中是否已经存在相等的字符串,已存在就不会创建了直接引用已经存在的
  2. 通过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
/**
* @author LeDao
* @company
* @create 2022-03-09 23:57
*/
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);
}
}

结果截图

image-20220626112852513

分析图解

指向同一个的比较结果是true,反之则为false

image-20220626190134077