本帖最后由 陈振兴 于 2012-7-8 10:31 编辑
昨晚看TCP/IP视频的时候听到毕老师说到"复杂事物的封装",我不能理解“复杂事物”的封装?是接口,类,还是其它?
我理解9种Wrapper类中的,都遵循String类的对象池和不变模式的规则。最好给我个例子,或者抽象一个事物我就能理解了。
我把Wrapper的贴出来,好像有的人不知道这个知识点!
(1).对象池(9个,8个基本类型Wrap+String)(两种模式适用于8个基本类型)
String s1 = "hehe";(首先在对象池里面找)
String s2 = "hehe";
String s3= new String("name");(生成新的对象)
System.out.println(s1==s2);true (在同一个对象池里)
System.out.println(s1==s3);false (一定意味着s3是新的字符串对象)
直接给出字符串,字符串对象在对象池里面拿,如果有直接拿,如果没有就创建。
对数面试题有:String s1 = new String("hehe");创建了几个对象?
在J2SE中2个。
在J2ME中1个,没有对像池概念。
(2)不变模式:
一个字符串对象创建后它的值就不能在被改变,直到当垃圾回收时。
String s1 = "hello";(它的值是没改变的)
s1=s1+",world";(两个字符串对象连接)改变的是他的指向,没改变值
如果频繁改值,会产生垃圾,不建议使用。
StringBuffer字符串缓冲 |