黑马程序员技术交流社区

标题: 不可变类——String类详解 [打印本页]

作者: 仲德明    时间: 2015-6-6 22:33
标题: 不可变类——String类详解
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 "没有任何对象去引用它,虚拟机的垃圾回收机制将接收它。
作者: ZYZQ    时间: 2015-6-6 23:00
总结不错
作者: 仲德明    时间: 2015-6-7 17:18
ZYZQ 发表于 2015-6-6 23:00
总结不错

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

相互学习!
作者: 仲德明    时间: 2015-6-7 22:06
gainn 发表于 2015-6-7 21:08
我一直对String的值在内存里的变化迷迷糊糊的……不过知道它是个特殊的引用类型就够啦,在内存里的变化把它 ...

仁者见仁,智者见智吧
作者: msxhm    时间: 2015-6-7 22:24
谢谢总结,辛苦了、{:2_32:}




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