叶飘零、 2021-11-17 14:58 采纳率: 100%
浏览 39
已结题

关于String进行运算后,地址值在内存中变化的问题

今天学习了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,是我对哪个定义理解错了吗

  • 写回答

3条回答 默认 最新

  • zcl_1991 2021-11-17 15:09
    关注

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 11月17日

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器