基本数据类型的参数传递
public class PassParamOne
{
public static void main(String[] args)
{
int x=5;
change(x);
System.out.print(x);
}
public static void change(int x)
{
x=3 ;
}
} 输出结果为5,main() 方法中X的值被放入change()方法中,随后change 方法的X被改变,
change结束后X被释放,但是 主函数的 X始终没有被改变。
引用数据类型的参数传递
public class PassParam
{
int y;
public static void main(String[] args)
{
PassParam pa=new PassParam();
pa.y=1;
change(pa);
System.out.println(pa.y);
int []x=new int[10]; //数组
x[0]=5;
change(x);
System.out.println(x[0]);
}
public static void change(PassParam pa)
{
pa.y=4;
}
public static void change(int[] x)
{
x[0]=3;
}
} 输出结果:4 对象的引用变量作为参数传递,两个方法指向同一个堆内存,
change()方法改变了堆内存的值,被释放后 主函数指向的内容也已被改变。
传递数组变量 和 传递引用变量的意义是一样的
引用参数传递的一个分析问题
public class PassParam
{
int y;
public static void main(String[] args)
{
PassParam pa=new PassParam();
pa.y=1;
change(pa);
System.out.println(pa.y);
}
public static void change(PassParam pa)
{
pa=new PassParam(); //新创建了一个对象
pa.y=4;
}
}
输出结果为 1: change() 方法里新创建了一个对象,并将其新地址赋值给了pa,所以change()方法改变的是
新地址的内容 ,主函数的堆内存不变