黑马程序员技术交流社区

标题: 字符串缓冲池 [打印本页]

作者: 你的昵称    时间: 2016-7-11 07:58
标题: 字符串缓冲池

原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1
将s2引用s1所引用的对象"Monday"
第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?
作者: 你的昵称    时间: 2016-7-11 08:00
惯例!自己先看看!
作者: 糊图    时间: 2016-7-11 08:09
java机制就是这样,没有为什么
作者: 愿望变美    时间: 2016-7-11 23:08
又受教了,
作者: cat73    时间: 2016-7-11 23:14
实际上,在 Java8 中,打开一个优化开关后(默认关闭),new 出来的 String 刚开始跟之前的 String 不是一个对象,但是过一段时间,通常是几次 GC 后,你会发现它们变成了同一个对象。。。
开启这个开关的方法是在 JVM 参数中增加这个:-XX:+UseStringDeduplication
所以说,任何时候都不要去依赖这种特性。。。




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