12
true
22
true
1
true

解决方案 »

  1.   

    12
    true
    22
    false
    1
    false
      

  2.   

    什么是hashtable啊,解释下好不faen?
      

  3.   

    浅克隆
    a为原对象,b为复制对象
    ====================
    12---------(append后a.str1内容是12)
    true---------(a.str1和b.str1句柄一致,都是指向同一内存地址)
    22---------(a.str2="22"这一句实际上是将a.str2指向新分配的常量内存空间"22",所以a.str2句柄变了,但b.str2没变,还是指向原来的地方--初始化的new StringBuffer()。但这一块内存内容为null).
    false--------基于上述
    1------a.htl 放入了一个元素,所以长度是1
    false-----a.htl和b.htl都是指向同一地址,故a和b长度一样---------------
    HashTable是散列表结构,一个key对应一个值。
      

  4.   

    再补充:
    1。由上可以看出,对于深浅克隆的不同点就是它们对基本类型和对象类型有不同和相同的待遇。
    在浅克隆中,基本类型的内容被复制到新的内存块中(即深克隆的意思),而对象类型只是复制了它们的引用而已。如例子中所示,StringBuffer对象和HashTable对象在复制对象中都只是原对象的引用。String虽然也是对象,但是它很特殊,无需特殊处理就已经被深克隆了,因此可以看作是基本类型。2。在深度克隆中就是要将对象类型内容复制到新的内存块中,而不是复制原对象的内存引用。因此可以对对象成员也来一个clone方法。由于StringBuffer类本身是final的,并且也没有重写Object类的clone方法,所以只能通过new Stringbuffer()来实现深克隆。3。可以通过实现serializable来实现深克隆,但是对于有transient限制的字段,序列化也没办法。