今天学习了String在内存中创建的问题
1、如果用字面量的方式定义String,其地址值直接指向常量池 例如:String test1 = "bot";
2、如果用创建对象的方式定义String,其地址值指向堆空间,堆空间的value数组的地址值再指向常量池 例如:String test2 = “bot”;
3、同一个常量在常量池中只会存在一个
基于上面学习到的三个概念得到的结果,上面1和2中举例的test1和test2最终都指向的是常量池中的同一个bot
但是如下代码让我感觉结果与学习到的定义有矛盾
String test1 = "bot";
String test2 = "bo";
test2 += "t";
System.out.println(test1 == test2);//结果返回为false
我想不明白为什么结果会返回false,按理说两个test都是字面量定义,当test2加了个t时,我理解系统应该按照第三条定义去常量池里寻找有没有一样的字符串,如果有就直接把地址值指向它,那么结果应该返回为true的,为什么会返回FALSE,是我对哪个定义理解错了吗