本帖最后由 q523053 于 2010-06-08 10:58:22 编辑

解决方案 »

  1.   

    看着答案理解的,如有错误请见谅
    QUESTION 246
    桌面程序最容易出现的问题就是用户输入和程序要求的不一致,比如账号类型是数字,但是客户在textfield可以输入任何,进行类型转化的时候就会抛出NumberFormatException;QUESTION 168
    断言不懂QUESTION 176
    总共只产生了三个对象:new出来的t和方法中new出来的t1,t2
    调用方法的时候产生的关系为:
    t包含方法中new出来的t2,这个t2包含方法中new出来的t1
    一直有引用指向t,所以垃圾回收不能回收任何一个对象QUESTION 218
    前面两个是ad可以理解,反序列化的时候就不懂了QUESTION 230
    equals相等的hashcode必须相等
    这里的equals比较的只有age和name.所以 hashcode 应该包含且只包含这两个QUESTION 104
    原来:
    i1    i2   i3
    obj1 obj2 obj3
    i3 = i1-->
    i1(obj1),i2(obj2),i3(obj1),这时候obj3是垃圾了
    i1 = i2-->
    i1(obj2),i2(obj2),i3(obj1),没有垃圾
    i2 = null-->
    i1(obj2),i2(null),i3(obj1),没有垃圾
    i3 = i1-->
    i1(obj2),i2(null),i3(obj2),obj1是垃圾
    所以最后obj1和obj3是垃圾(要我选的话就选2个垃圾了....(不细心啊))
    但是认为每个obj都有一个weight属性所引用的Long对象,也一起成为垃圾了,一共是四个垃圾
      

  2.   

    QUESTION 246
    题目有没有写全?
    QUESTION 168
    使用断言需要注意三点:
    1、断言必须用在程序最不可能执行到的地方;
    2、断言不能用于public方法的参数检验,但可以用于private方法的参数检验;
    3、断言不能改变类或方法的属性值
    QUESTION 176
    所有的实例都有引用,没有对象被回收;t也只是等到11行执行完才被回收。
    第12行犯了第2个错误
    QUESTION 218
    创建Beagle实例时,先执行Animal的构造方法,再执行Dog的构造方法,打印出ad;由于Animal没有序列化,所以在反序列化的过程中要重新创建Animal对象,它的构造方法又执行了一次,打印出a,而Dog继承了序列化接口,创建的过程实现了序列化和反序列化,不用重新创建它的实例;
    QUESTION 230
    equals相等的hashcode必须相等
    这里的equals比较的只有age和name:return age == p.age && name.equals(p.name);
    所以 hashcode 应该包含且只包含这两个
    QUESTION 104
    二楼已经说得很清楚
      

  3.   

    QUESTION 246
    题目有没有写全?
    QUESTION 168
    使用断言需要注意三点:
    1、断言必须用在程序最不可能执行到的地方;
    2、断言不能用于public方法的参数检验,但可以用于private方法的参数检验;
    3、断言不能改变类或方法的属性值
    第12行犯了第2个错误QUESTION 176
    所有的实例都有引用,没有对象被回收;t也只是等到11行执行完才被回收。
    QUESTION 218
    创建Beagle实例时,先执行Animal的构造方法,再执行Dog的构造方法,打印出ad;由于Animal没有序列化,所以在反序列化的过程中要重新创建Animal对象,它的构造方法又执行了一次,打印出a,而Dog继承了序列化接口,创建的过程实现了序列化和反序列化,不用重新创建它的实例;
    QUESTION 230
    equals相等的hashcode必须相等
    这里的equals比较的只有age和name:return age == p.age && name.equals(p.name);
    所以 hashcode 应该包含且只包含这两个
    QUESTION 104
    二楼已经说得很清楚