示例1: 基本类型数据作为参数传递
public class ParameterTransfer1 {
public static void main(String[] args) {
int num = 30;
System.out.println("调用add方法前num=" + num);
add(num);
System.out.println("调用add方法后num=" + num);
}
public static void add(int param) {
param = 100;
}
}
结果:
调用add方法前num=30
调用add方法后num=30
示例2 对象作为参数传递
public class ParameterTransfer2 {
public static void main(String[] args){
String[] array = new String[]{"ceshi"};
System.out.println("调用reset方法前array中的第0个元素的值是:" + array[0]);
reset(array);
System.out.println("调用reset方法后array中的第0个元素的值是:" + array[0]);
}
public static void reset(String[] param) {
param[0] = "hello, world!";
}
}
输出结果:
调用reset方法前array中的第0个元素的值是:ceshi
调用reset方法后array中的第0个元素的值是:hello, world!
无论是基本类型作为参数传递,还是对象作为参数传递,实际上传递的都是值,只是值的的形式不同而已。
第一个示例中用基本类型作为参数传递时,将栈内存中的值30传递到了add方法中。
第二个示例中用对象作为参数传递时,将栈内存中的值BE2500传递到了reset方法中。当用对象作为参数传递时,真正的值是放在堆内存中的,传递的是栈内存中的值,而栈内存中存放的是堆内存的地址,所以传递的就是堆内存的地址。
以上就是它们的区别。
更多源代码请访问:http://jiaruiblog.com
欢迎私聊探讨~
网友评论