1.需要引入字符串池的概念(String pool),但要创建字符串对象的时候,首先会搜索字符串池是否已经存在,如果存在则不创建。2.==是比较对象的引用,也就是对应内存的地址是否一样。3.这样的问题,在通常的开发中不会应用,但会出现在面试中。4.s1和s2引用了同一个地址,所以是true。而s3是由三个字符串对象创建新的字符串,因此不是同一个对像,为false。5.要对字符串的intern()进行了解及 The Java Language Specification的3.10.5 String Literals。参考jdk api。package testPackage;class Test {public static...
与String池有关:java 虚拟机中本身含有了一些字符了。如果没有某字符串,才创建个字符串。这样一来就可以多个变量去引用某个字符串了。s1 == s3 为false是因为s3 指向 a + b + c 变量的运算结果,未来节省空间。会创建1个StringBuffer 来存放数据。最后toString()返回字符串,是新分配的。...