黑马程序员技术交流社区

标题: JAVA 中 String 是不是很特殊 ? 内存分配 如何? 对象地址 [打印本页]

作者: Union    时间: 2014-4-18 06:32
标题: JAVA 中 String 是不是很特殊 ? 内存分配 如何? 对象地址
String 定义字符串

new 关键字定义的字符串有什么区别?

从内存分配的角度来理解!

还有 有时候 一个对象 被打印出来的一串字符 (地址码) 有什么深层的作用?
而且同一个对象多次重新运行时 为什么那个地址码会变化?



作者: 向日葵的曙光    时间: 2014-4-18 07:23
String定义一个字符串是定义一个引用,此引用放在栈内存中,而New出来的对象则定义在堆内存中,存储的位置不一样
一个对象打印出字符串,而这个字符串就是此对象在堆内存中的地址
因为对象的地址是随机分配的,一次运行完之后垃圾回收机制会回收内存
等你重新运行,又会重新随机分配内存
作者: 苍穹的雨    时间: 2014-4-18 11:09
String 定义字符串 与new 关键字定义的字符串没有区别吧,String不是可以自动装箱的嘛,所以用不用new都没区别。
有时候 一个对象 被打印出来的一串字符 (地址码) ,那是内存地址。
而且同一个对象多次重新运行时那个地址码会变化是因为每次运行系统都会重新分配给对象一个新的内存地址。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2