原始类型如 int, float 等是按值传诵的,其他的都是按引用。
我的理解是object都是把引用传来传去,想实现C++的拷贝则要用new或clone().

解决方案 »

  1.   


    在java中有两种参数传递方式:
    1,传值,这种方式只是对基本数据类型,如int,byte,char等;
    2,传引用,对象实例采用这种方式,需要注意的是,java里的数组也是对象,象int[]这种东东也是对象。也就是说,在传基本数据类型的时候,需要做拷贝;而传对象的时候就不需要做拷贝,直接传的是引用。这个跟c++里不一样,c++里传值还是传引用可以自己灵活选择,但是java却不能,都已经固定死了。java里传对象是固定传引用,所以“拷贝构造”也就不存在了。另外java里的引用跟c++中的不一样,java中的引用可以为空,可是c++中的引用却不能为空,从这一点来看,java里的引用更象c++中的指针。
      

  2.   

    在java里所有的值都是按值来传递。基本类型如此,对象也是如此。
      

  3.   

    JAVA里面:
    基本类型是传值,就是把实参的值赋给形参;
    对象是传递引用,让形参和实参指向同一块内存;
    JAVA中的参数传递是非常简单的,没有C++那么的麻烦,当然也缺少其灵活性了。
      

  4.   

    呵呵,突然明白了。int[] 其实是一个 Array 的引用类型而不是一些 int 基本类型。清楚了清楚了,谢谢各位
      

  5.   

    to: littlecpu(嘿,哥们,你欠我分,快给咯) 不要那么粗鲁无礼!不要进行人身攻击!!!希望你在学习编程的同时要学习做人的道理!!其实传值与引用,只是理解不同而矣!严格来说,Java中所有方法参数都是传值。因为即使是传递的参数是对象的引数时,引数本身也是传值的。所有基本类型都是传值的。
    传值:被传入的参数被视为内部的局域变量,其变化不影响外部变量的原始值。
    传引:对于引数本身来讲也是传值的,但是在方法内部若对引数所指向的对象属性有改变,则会直接实时地影响所指向的对象属性。
    理解传引这一概念的最佳方式就是画出指向图。eg. Aà(Object)O 对于A本身而言它是传值的,也就是说当A作为参数传递的时候,假若在方法内部把其它的引数赋给了A,但是当方法返回时,A仍旧是指向原来的对象,而不会改变。其次,对于传引来说,假若在方法内部对A所指向的对象属性有改变,那么对象属性的改变会是直接实时的。
    再次强调,Java中所有的参数传递都是传值的。
    传值这种题型的考试很多,基本类型传值问题考的较多的是对某一变量,故意用某一方法试图改变它,然后方法返回时再打印它。按传值的说法,实际上该变量并没有改变。