myBall=ball;//在这种情况下,ball和myBall是不是还是指向同一块内存地址呢?当然是了Sphere myBall=new Sphere;
这句生成的空间就要被回收了

解决方案 »

  1.   

    Sphere ball=new Sphere;
    Sphere myBall=new Sphere;
    这两句表示在内存中分别为ball和myball分配了空间
    myBall=ball
    表示将ball赋值给了myball,即他们都指向内存的同一块空间!不过原来myball的空间就要被java的垃圾回收器清理掉了!
      

  2.   

    Sphere myBall=new Sphere;
    分配的内存在myBall=ball后失去引用,将被收回!
      

  3.   

    public class Sphere
    {public static void main(String [] args)
    {
    Sphere ball=new Sphere();
    Sphere myBall=new Sphere();System.out.println(ball);
    System.out.println(myBall);
    System.out.println("=============================");
    myBall=ball;
    System.out.println(ball);
    System.out.println(myBall);
    }
    }
    楼主可以用这段代码去测试一下!
    从打印出来的地址,你可以发现很多东西
      

  4.   

    java中没有使用new的赋值都只是针对reference的赋值(primitive type除外),也就是简单的让一个变量可以控制这个对象。
      

  5.   

    myBall=ball;//在这种情况下,ball和myBall已经不是指向同一个内存地址了。