值传递和引用传递的区别

46 阅读1分钟

1:按值传递是什么(例:基本数据类型:字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float)

指的是在方法调用时,传递的参数是按值的拷贝传递。

按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了,也就是不会改变原来自身的值

例如:

public class Test {
	public static void change(int i, int j) { 
		int temp = i; 
		i = j; 
		j = temp;
	} 
 
	public static void main(String[] args) { 
		int a = 3; 
		int b = 4; 
		change(a, b); 
		System.out.println("a=" + a); 
		System.out.println("b=" + b);
	}

结果:a=3,b=4

此时a,b的值并未发生改变

2:按引用传递是什么(例: 对象和数组,指针)

指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。

传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。也就是会改变自身原来的值

例:

public class Test {
	public static void change(int[] arr2) { 
		arr2[0] = 6; 
	} 
 
	public static void main(String[] args) { 
		int[] arr = { 1, 2, 3, 4, 5 }; 
		change(arr);
		System.out.println(arr[0]);
	} 

此时结果为:6

数组此时传递的值为地址值。所以自身的值发生改变