String
//会创建一个对象 字符串常量池中也创建一个字符串。
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()));