黑马程序员技术交流社区

标题: 新手——关于String的用法 [打印本页]

作者: 李爱霞    时间: 2011-12-30 09:03
标题: 新手——关于String的用法
本帖最后由 李爱霞 于 2011-12-30 09:55 编辑

String s = new String("李爱霞");创建了几个String Object? 二者之间有什么区别?

作者: 阮金明    时间: 2011-12-30 09:14
一个是String值对象“xyz”,一个是指向“xyz”的String引用对象s,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿
作者: 张绍成    时间: 2011-12-30 09:50
两个!
        "李爱霞 "作为一个常量字符串首先被创建,它被保存在“串池”中。所谓串池,简单讲就是从程序运行开始,你创建的所有常量字符串被统一保存的地方。在串池中已经存在 "李爱霞 "这个串的情况下,如果你需要一个内容相同的串,你不需要再次创建一个,而是直接用这个就可以,这样当然是为了节省空间。注意,一个字符串是无法被修改的,所以在程序的不同地方用不同变量引用同一个常量串没有任何危险,因为你只能读取它而不能修改它。
        当然,使用new   String也创建了一个对象, "李爱霞 "作为传入构造方法的实际参数,其含义就是:我要创建一个串,它的内容和串池中的 "李爱霞 "内容一致!




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