1、一些定义
值传递:把实际传入参数的值,在内存中赋值一份
引用传递:传入的是实际参数的地址
2、传递基本类型的参数
因为Java是值传递,那就不难理解下面的代码不交换任何值
swap(Type arg1, Type arg2) { Type temp = arg1; arg1 = arg2; arg2 = temp; }
3、传递引用变量的参数
Java都是通过引用来操作对象的,所有指向对象的变量都是引用,然而,Java不会把引用传递给方法的参数,而是引用的值;
那么,为什么对象的成员值可以改变呢?
class Apple { public String color="red"; } public class Main { public static void main(String[] args) { Apple apple = new Apple(); System.out.println(apple.color); changeApple(apple); System.out.println(apple.color); } public static void changeApple(Apple apple){ apple.color = "green"; } }
因为原始的和赋值的引用都指向了同一个对象,所以成员的值被改变了
输出:
1 red 2 green