本帖最后由 ccedasmi 于 2010-03-13 22:05:44 编辑

解决方案 »

  1.   

    //student t=new student("","");
    //t=(student)ob; 你这里主要是想得到一个新的引用变量这样就可以了
    student t=null;
    t =(student)ob;
    不需要student t=new student("","");这里多创建了一个对象
      

  2.   

    //student t=new student("","");
    //t=(student)ob; student t=(student)ob;
    student t=new student("",""); 创建了一个Student对象, 一个引用t指向该对象
    t=(student)ob;然后将引用t指向另一个对象。 刚才创建的那个Student对象就没有引用指向它;随时可能被垃圾回收。
    student t=(student)ob; 则是创建一个引用指向引用ob所指向的那个对象。即引用t与ob同时指向一个对象
      

  3.   

    红色步骤执行顺序:
    1.创建一个student实例
    2.声明一个student类的引用t
    3.将t指向步骤1中创建的student实例
    4.将object类的引用ob强制转换为student类的引用(同时也将ob所指向的Object实例强制转换为student实例?)
    5.将t指向ob所指向student实例(t先前指向的student实例此后若干时间内会被JVM当做垃圾回收)
    蓝色步骤执行顺序:
    1.将object类的引用ob强制转换为student类的引用(同时也将ob所指向的Object实例强制转换为student实例?)
    2.声明一个student类的引用t
    3.将t指向ob所指向student实例
    So, Are U Clear?