很多朋友有关于这样的争议:
String s = new String("ykmaiz"); 创建了几个string object?
发表一下自己的见解。
两个或一个,”ykmaiz”对应一个对象,这个对象放在字符串常量缓冲区,常量”ykmaiz”不管出现多少遍,都是缓冲区中的那一个。
New String每写一遍,就创建一个新的对象,它一句那个常量”ykmaiz”对象的内容来创建出一个新String对象。
如果以前就用过’ykmaiz’,这句代表就不会创建”ykmaiz”自己了,直接从缓冲区拿。
这也关系到我之前说过的一个问题,String的class为什么定义成final的,用到一次就放在缓冲区了。这样大家理解了航。。。
有不对的地方欢迎大家发表见解哈。。。 |
|