我们知道,JAVA中虽然号称没有指针,但实际对象的传递是引用传递,相当于C的指针,只不过是受限的指针。而且JAVA方法返回的对象应该也是对象的引用,而不是对象的值,如:private Color createColor(int r,int g,int b)
{
    return new Color(r,g,b);
}这里我们可以得到Color对象的引用,进而操作Color对象。如果在C语言的函数中返回一个指针,那你可以得到这个指针,但这个指针指向的内容却不一定能得到,如:int *test()
{
    int i = 0;
    int *j = &i;
    return j;
}如果你在外部调用test方法,你可以得到指针j,但j指向的内容即0却不一定能得到。因为i作为局部变量,有可能在test执行完后就被释放。
那么java里对象的引用与传递到底是怎么工作的?

解决方案 »

  1.   

    C语言学的太久远了  指针有点忘了,但是JAVA返回一个引用 实际上都是在栈中新建的引用,然后指向该对象。
      

  2.   

    JAVA的引用变量实际就是一个指针值...就是一个指针变量.Color c=new Color(r,g,b);Color d;c=d;c的值实际就是一个指针值,JVM会根据这个值去找到对象的地址.C语言里说指针值是一个十六进制的值,但JAVA把它隐藏了,你无法得到这个值.但是它可以保存在变量中,相同变量之间可以相互交换值.
      

  3.   

    推荐看下thinking in java ,里面有讲~
      

  4.   

    首先,再别用c++的思想来考虑java了,其次,java里返回的是对象,你可以得到返回的值,这个值不会被回收的(java里叫垃圾回收),应为这个内存你还在使用,.....