简单的类是call by value,例如:String, Integer, Boolean, BigInteger, Float, Double等等吧,复杂的类都是call by reference。

解决方案 »

  1.   

    分数挺多的
    来我回答
    你学过c++
    吗?没也没关系
    有我在吗?就是int t;
    fuction(int t)
    {
           this.t=t;
    }fuction(CAR t)
    {
           this=t;
    }就是那样比较好玩的
    还不知道就给我发短信我跟你维护fuction(......)
    就是
    构操函数的
      

  2.   

    这个问题已经解决了。
    参见:http://expert.csdn.net/Expert/topic/1760/1760533.xml?temp=9.241885E-02
      

  3.   

    to wanglh2000: 你指的简单类,复杂类是按什么标准区分的?按照thinking in java书的术语应该是primitive和reference吧!to wyqiang(强):
    直接的说我不喜欢你的回答方式,什么没时间给我背书,如果你只是为了得分而回答问题,我想你违背了csdn论坛的初衷!就我的理解记分制度是为了保障文章的质量,提高回答问题的参与度,最终能过让大家都得到满意的答案!提高大家的水平。
    回答问题认真负责一点!!写代码没注释就是垃圾代码,况且还是用来回答问题的!
    我的问题是在**JAVA**中到底什么是call by value,call by reference.
    你真么明白吗?我看未必,你连java中不支持call by reference都没有指出来,我真的想看看你背出什么来?
    我说话直,希望搞清楚问题,望勿介意
      

  4.   

    call by reference和pass by reference是一样的意思么?不好意思,学的是英文的。如果一样的。那么我简单说一下吧。按照C++的理解,所有值都可以看成是对象。这样就有了pass by value和pass by reference之分。在Java里边,根据Bruce Eckel的一种说法,简单来看,
    可以这样说,所有基本类型都是pass by value,所有其他类型都是pass by reference,这里String是个特殊的类,虽然像基本类型,但我认为可能是pass by reference.pass by reference, 就是把对象的句柄(引用)传递给调用方法,所有的操作都是通过这个句柄作用在这个句柄指向的对象上,并没有制作副本。这样方法调用结束后,这个对象的状态是改变过的,不可恢复的。pass by value,按C++的说法(Java应该差不多罢),就是制作传入的参数的一个副本,操作都是对这个副本进行的。但是因为Java里边没有指针,不可以直接操作内存地质,所以实际上在Java里边pass by value和pass by reference并不需要理解得那么深刻。
      

  5.   

    在C中, 举个例子:
    void swap1(int x, int y)
    {
      int temp;
      temp = x;
         x = y;
         y =temp;
    }void swap2(int *p, int *q)
    {
       int temp;
       temp = *p;
         *p = *q;
         *q = temp;
      
    }能够实现交换两个int 变量的函数是 swap2.
    swap2实现 call by reference. 真正change variable contents remotely.
    swap1实现 call by value.里面参与运算的是 x 和y 的copy.  x 和y的值并没有改变。