请问为什么这样会出错?...
AClass objAClass;void doSth(AClass arg){
   arg=new AClass();
}
...在调用doSth()之后objAClass还是为null 为什么?
谢谢s

解决方案 »

  1.   

    AClass objAClass;AClass doSth(){
       arg=new AClass();
       return arg;
    }
    objAClass=doSth();===========
    java 是传值的,就是说只传了个对象地址的值.
    在函数里改变不了对象地址的值,但可以改变对象的成员,如:
    void doChange(AClass a)
    {
       a.setI(10);
    }
    会改变成员变量i.
      

  2.   

    在JAVA裏面對象變量又叫引用變量,意思就是說這個變量裏存放的不是對象本身,而只是一個指向對象的引用.
    另一方面,JAVA的方法傳遞機構是采用值傳遞的,也就是說對於每個作為參數的值在方法中都會有一個COPY.
    結合這兩個知識點就可以知道,在將引用變量作為參數傳遞進去時,方法中會有一個該引用的複制,在你寫的程序中只是改變了這個COPY的版本,方法一結束就消失了.
      

  3.   

    malligator(大螟) 说的不错,lz应该明白了!