java吧 关注:1,275,035贴子:12,789,455
  • 5回复贴,共1
求助

求大解析一下底层,最好有图

只看楼主收藏回复



IP属地:湖南来自Android客户端1楼2022-12-10 17:16回复
    每串字符串地址值不一样好像是,反正字符串判断用equal就行了别用==号


    IP属地:福建来自Android客户端2楼2022-12-10 18:56
    回复
      2025-08-22 14:49:25
      广告
      不感兴趣
      开通SVIP免广告
      这里要涉及到编译后源码的问题了,s3编译后直接是s3=“abcdef” ,字符串创建是有一个单独的常量池,常量池中有一模一样的字符串时会直接指向该地址,由于s3编译后是abcdef在常量池中是有一个s2=abcdef的常量,这里s3会直接指向s2的地址


      IP属地:重庆来自Android客户端3楼2022-12-10 19:10
      收起回复
        字符串比较还是用equals方法稳妥,你自己点进去看源码其实就是循环比较每个字符是否相当


        IP属地:重庆来自Android客户端5楼2022-12-10 19:15
        回复
          s3是直接指向字符串常量池中已经存在的abcdef;s4由于是用s1参与拼接,所以是在堆内存创建Stringbuilder对象,append()添加到stringbuilder对象中,然后再toString方法创建String对象,所以s2中的地址值!=s4


          IP属地:福建来自Android客户端6楼2022-12-16 19:05
          回复