什么时候是引用参数被改,什么时候又是值参数被改?比如这个:import java.io.*;
  public class PassTest{
  float ptValue;
  public static void main(String args[]) {
  int val;
  PassTest pt=new PassTest();
  val=11;
  System.out.println("Original Int Value is:"+val); 
  pt.changeInt(val);                   
  System.out.println("Int Value after Change is:" +val); 
  pt.ptValue=101f;
  System.out.println("Original ptValue is:"+pt.ptValue);
  pt.changeObjValue(pt); 
  System.out.println("ptValue after Change is:"+pt.ptValue);
  }
  public void changeInt(int value){
  value=55;           
  }
  public void changeObjValue(PassTest ref){
  ref.ptValue=99f;       
    }
  }
请大家帮我解释下 咋有的值被改了有的没改呢,问题有点白痴嘿嘿

解决方案 »

  1.   

    Java语言中,如果形参是基本数据类型或者是String类,则传递的只是实参的值而已。
    而其他情况就传的是引用,这时候修改了形参的值,就会影响到实参所引用的对象了。
      

  2.   

    基本数据类型有:
    boolean, char, byte, short, int, long, float, double.
      

  3.   

    楼上回答得不是很准确,准确的说java里面只有一种参数传弟,哪就是值传递,但是为什么又会出现引用形数据传递与基础数据传递差别呢,这得从数据存放类型说起了,
    我们都知疲乏,对于一基础数据来说,数据空间里存放的是数据类型,以及数据的实际值,比如a = 5,在这个空间里面的值就是5,
    而引用数据则不是这样的,引用数据是把数据的类型和对数据的引用放在里面,所以你做值传递时,你只是把这个值传进去了,第一种就是把5传进去了,而第二种就是把引用传进去了,让另一个参数也指向原先的引用,所以你对后面的参数的修改其实就是对传以前所引用的值的修改所以两个值都会发生改变,够详细了啥,
    拿分来,
      记到一点,JAVA只有值传递,只不过所谓的值有差别而意,。。
      

  4.   

    我倒是挺喜欢C里面指针指来指去的。那样知道自己在干什么。
    Java里面伪装地太多了。理解起来都麻烦。