本帖最后由 徐晓磊 于 2012-4-26 00:38 编辑
我的理解是,享元模式是对内存缓存区内容得重复使用,对相同内容不在创建,而是使用同一份。
String 类型对象创建的时候,如果该引用对应的字符串在缓存区存在,那么缓存区也一样不会重复创建,而是使用同一份。
但是与Integer不同的是,String对象不存在自动装箱与拆箱,所以在比较两个String对象的时候,依然比较的的是内存地址,而不是对象中存的字符串。所以对于下面的使用
String str1 = new String("abc");
String str2 = new String("abc");
str2 == str2 是flase
所以String类应该也是使用了享元模式,但是由于咩有自动拆箱和装箱,因此没有Integer那样比较数值时候能够返回true
|