chaoredsdragon 2019-06-25 13:10 采纳率: 100%
浏览 573

String对象能在堆中存放地址值吗

String line = new String("hello");
“hello"在常量池开辟了个空间,那么line指向的堆内存的地址存放的是常量池中“hello”的地址值,还是字符串"hello"???

  • 写回答

2条回答 默认 最新

  • 永寂如孤星 2019-06-25 14:05
    关注
    String line = new String("hello");
    

    这行代码可以拆分成2部分,分别为

    String line = null;//这行代码的意义为:在栈空间中声明一块内存,该内存中保存的值为地址,内存名为line
    line = new String("hello");
    //因为String是final类,"hello"对应一个对象,这个对象会被存放在字符串常量缓冲区中
    //tip:字符串常量缓冲区独立于运行时常量缓冲区
    //如果"hello"是第一次出现则会单独声明一个对象,否则直接从缓冲区中拿
    //所以new String("hello")的意义是通过拿取常量缓冲区中的hello来构建一个新的String对象,
    //堆空间中保存的是String对象,堆中不存放对象引用
    //字符串常量缓冲区位于Java方法区
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题