String
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f71c23f0aa007dc868a135ff6535af4b.png#pic_center)
//会创建一个对象 字符串常量池中也创建一个字符串。
String s1 = "ct";
//不会创建对象
String s2 = "ct";
- String s1 = new String(“ct”);
//会创建两个对象 1会在堆上创建一个对象,2字符串常量池中也创建一个字符串。
String s1 = new String("ct");
//会创建一个对象 1会在堆上创建一个对象
String s1 = new String("ct");
- String s1 = new String(“ct”).intern();
//会创建两个对象 1会在堆上创建一个对象,2字符串常量池中也创建一个字符串。
String s1 = new String("ct");
//不会创建对象
String s1 = new String("ct").intern();
@Test
void contextLoads() {
String s1 = "pkslow";
String str1 = new String("pkslow");
String s2 = new String("pkslow").intern();
System.out.println(str1.intern() == str1);
System.out.println(s2 == str1);
System.out.println(s2 == str1.intern());
System.out.println(s2 == s1);
}
//运行结果
false
false
true
true
//用于优化内存
List<MultiTenancy> multiTenancyList = multiTenancyService.list();
MultiTenancy multiTenancy1 = new MultiTenancy();
multiTenancy1.setName(multiTenancyList.get(0).getName().intern());
MultiTenancy multiTenancy2 = new MultiTenancy();
multiTenancy2.setName(multiTenancyList.get(1).getName().intern());
System.out.println(multiTenancy1.getName() == multiTenancy2.getName());
System.out.println(multiTenancy1.getName().equals(multiTenancy2.getName()));