当调用一个方法传入参数时,传入的是这个引用或基本类型变量所指向或者是所在的内存空间地址,接下来在方法体中所操作的是该引用或者是该基本类型变量所在的内存空间中的内容
public class Test {
float pvalue;
public void changInt(int v){
v=55;//只能是一个基本类型变量才能接收55,而此时v是基本类型所在的栈空间,不是一个基本类型变量,所以此时v=55相当于55,v=就没有用
}
public void changStr(String s){
s=new String("different");//当传入一个引用类型变量的时候,这里的s就是代表了引用类型变量所在的堆空间,不可以将一个堆空间指向一个堆空间,只能是一个栈空间指向一个堆空间,所以此时s=new String("different")就相当于new String("different"),s=就没有用
}
public void changeobj(Test test){
test.pvalue=99f;//就是把传过来的引用类型变量所对应的堆空间中的pvalue变量的值变成了99f,所以输出的结果就是99.0
}
public static void main(String[] arg){
String str;
int val;
Test test=new Test();
val=1;
test.changInt(val);
System.out.println("val="+val);
str=new String("hello");
test.changStr(str);
System.out.println("str="+str);
test.pvalue =101f;
test.changeobj(test);
System.out.println("test="+test.pvalue);
/* 输出结果为:
val=1
str=hello
test=99.0*/
}
}
网友评论