java中有个Spring Pool。就是所谓的字符串池。
创建字符串对象时,如果使用 String str = "hello"; 这种方式创建。程序就会先去Spring Pool中寻找有没有“hello”这个字符串,如果有就将str指向Spring Pool中的“hello”这个字符串。如果没有,程序就会先在Spring Pool中创建hello这个字符串,然后再将str指向它。
如果使用 String str = new String("hello"); 这种方式创建字符串对象。程序会在堆中创建一个字符串对象hello,然后将str指向堆中的这个字符串对象。在这之后,程序会在Spring Pool中寻找有没有hello这个字符串,如果没有就创建一个,如果有,就什么都不做。 |