String类教材纰漏?
问个问题:
这里说"String类使用构造方法public String(String original)可以构建String类示例,创建后不能修改和变动"。
这个“创建后不能修改和变动”不知道什么意思
------解决方案--------------------public final class String
implements java.io.Serializable, Comparable<String>, CharSequence{}这是源码 String为final类形,只能实例一次,以后不能更改,你看到的+等等都 不是对这个进行更改,而是new 新的String 原来的那个依然还在
------解决方案--------------------没什么实在意义,你就知道String类实力后对象不会改变就行。其他又无关紧要。
------解决方案--------------------这个太深究没什么意思,不能改就是不能改,他是引用类型,当想用另一个值覆盖的时候,他确实会有一个新值,只是这个新值是一个重新开辟的内存空间,原值依然占着一个内存空间,只是现在变成垃圾了。
------解决方案--------------------参考《严蔚敏数据结构》第四章“串”的分配、回收、扩充等等算法,会帮助你从内存的角度去精确的理解String、StringBuffer的异同。
------解决方案--------------------String s = "电视1";
s = "电视2";
s实际是指向了不同的字符串。
并没有将 "电视1"
字符数组,修改为 "电视2"
s是一个遥控器,开始控制的 "电视1";
后来s去控制 "电视2";
并没有对“电视1”进行任何修改。也修改不了。