在JAVA中数据类型分为基本类型和对象类型。相应的,变量也分为基本类型和引用类型。
下面我们通过基本类型和引用类型来区别值传递和引用传递
public class Person{
static class User{
int age;
static void a(Integer num){
num++;
}
static void a(User u) {
u.age+=1;
}
}
public static void main(String[] args) {
int a=10;
Integer a2=10;
User.a(a);
User.a(a2);
System.out.println(a);
System.out.println(a2);
System.out.println("------引用传递---------");
User u = new User();
u.age=10;
User.a(u);
System.out.println(u.age);
}
}
输出结果为
10
10
------引用传递---------
11
结论:
基本数据类型传值,对形参的修改不会影响实参; ——值传递
引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象; ——引用传递
而包装类其实是对基本类型的特殊处理,传入进去的相当于是值。 ——值传递