Intern方法
存在的目的就是为了节省空间,让存相同字符串(equals方法相同)的多个对象去指向同一个对象,要么是常量池,要么是第一次创建(常量池中没有)的这个对象
图1:常量池中有“hello”、“world”;
S2与s3因为已经有常量池的 “hello”或者“world”了(即便不是显示赋值,只要填了,那就有),所以调用方法以后返回的对象是直接指向常量池的,但是s4是个新的对象,那时候没有helloworld这个词,只有这么一个对象,所以s4.intern,也是指向这个helloword,返回true
图2:
常量池中有“hello”“world”“helloworld”三个词,str3指向了一个拼接完的string对象,但如果调用方法intern方法,因为常量池中有“helloworld”,str3.intern就相当于指向了常量池的对象,返回false