A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仲德明 中级黑马   /  2015-6-6 22:33  /  392 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA为了提高效率,对String类型进行了特别的处理---为string类型提供了串池
定义一个string类型的变量有两种方式:
string name= "tom ";(String name="t"+"o"+"m"的效果和此处是相同的)
string name =new string( "tom ")
如果你使用了第一种方式,那么当你在声明一个内容也是 "tom "的string时,它将使用串池里原来的那个内存,而不会重新分配内存,也就是说,string saname= "tom ",将会指向同一块内存。而如果用第二种方式,不管串池里有没有"tom",它都会在堆中重新分配一块内存,定义一个新的对象
另外关于string类型是不可改变的问题: string类型是不可改变的,也就是说,当你想改变一个string对象的时候,比如name= "madding " 那么虚拟机不会改变原来的对象,而是生成一个新的string对象,然后让name去指向它,如果原来的那个 "tom "没有任何对象去引用它,虚拟机的垃圾回收机制将接收它。

8 个回复

倒序浏览
总结不错
回复 使用道具 举报

谢谢:victory:
回复 使用道具 举报
一直对字符串有一种爱恨交加的感觉,看到这个总结,感觉还是很不错的。感谢分享。
回复 使用道具 举报
视频看到这了,有了你的总结,让我理解的更深刻了,非常感谢。。
回复 使用道具 举报
我一直对String的值在内存里的变化迷迷糊糊的……不过知道它是个特殊的引用类型就够啦,在内存里的变化把它看做基本数据类型就行了。
回复 使用道具 举报
郝民杰 发表于 2015-6-7 20:19
一直对字符串有一种爱恨交加的感觉,看到这个总结,感觉还是很不错的。感谢分享。 ...

相互学习!
回复 使用道具 举报
gainn 发表于 2015-6-7 21:08
我一直对String的值在内存里的变化迷迷糊糊的……不过知道它是个特殊的引用类型就够啦,在内存里的变化把它 ...

仁者见仁,智者见智吧
回复 使用道具 举报
谢谢总结,辛苦了、{:2_32:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马