您的位置:首页 > 编程语言 > Java开发

Java学习之参数传递详解

2014-12-23 16:42 218 查看
Java中的参数传递问题:

基本类型:形式参数的改变对实际参数没有影响。在参数传递过程中,形参和实参占用了两个完全不同的内存空间。

引用类型:形式参数的改变直接影响实际参数。在参数传递的过程中,形参和实参指向的是同一块内存空间。

基础数据类型(int,char,……)传值,对象类型(Object,数组,容器……)传引用。

有说java方法参数都是传值的,理解方式不同而已。引用本身也是值(对象地址)。

传值方式,是该值赋给了另外一个内存空间的变量 ,作用的内存空间不同,所以不改变本身的值。

传引用方式,传递的是引用的内存地址值。此时,形参和实参指向同一个内存地址。对形参所指向的对象的修改,如修改对象属性、容器内容等,会影响到调用方。对形参本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。

<pre name="code" class="java">public class bb {

public static void main(String[] args) {
int a = 10;
int b = 20;
int[] arr = new int[] { 1, 2, 3, 4, 5 };
System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20
change(a, b);
System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20
change(arr);
System.out.println(arr[1]);//arr[1]=4
}

public static void change(int a, int b) {
System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20
a = b;
b = a + b;
System.out.println("a=" + a + ",b=" + b);// 结果为a=20,b=40
}

public static void change(int[] arr) { // arr={1,2,3,4,5};
for (int x = 0; x < arr.length; x++) {
if (arr[x] % 2 == 0) {
arr[x] *= 2;
}
}
// arr={1,4,3,8,5};
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: