java基础部分——java中值传递与引用传递

先来个概念:

1、值传递的时候,将实参的值copy一份给形参,形参相当于一个副本,副本的内容无论怎么修改,都不会影响到原件本身

2、引用传递的时候,将实参的地址copy一份给形参,地址指向同一块内存区域,所以原件本身会被改变。

一般情况下,在数据做为参数传递的时候,基本数据类型是值传递,引用数据类型是引用传递(传递地址)。

备注一下:String类型传递时比较特殊, 虽然String不是基本数据类型,但其表现结果为值传递(例子3)。

还是先看例子,概念先读一下。看完例子就明白了。

例1(值传递):

public class PassByValue {

	public static int add(int a) {
		a = 20;
		return  a;
	}
	
	public static void main(String args[]) {
		int a = 10;
		add(a);
		System.out.println(a);
	}
}

结果:

10

例2(引用传递):

public class PassByQuote {

	//冒泡排序
	public static void sort(int a[]) {
		for(int i = 0; i < a.length; i++) {
			for(int j = 1; j < a.length - i; j++) {
				if(a[j-1] > a[j]) {
					int temp = a[j-1];
					a[j-1] = a[j];
					a[j] = temp;
				}
			}
		}
	}
	
	public static void main(String args[]) {
		int a[] = {1,23,12,7,2,19,0};
		sort(a);
		for(int i : a) {
			System.out.print(i+ " ");
		}
	}
}

结果:

0 1 2 7 12 19 23 

例3(String类型传递):

public class PassByString {

	public static String change(String a) {
		a = "Hello RM";
		return a;
	}
	
	public static void main(String args[]) {
		String a = "I am RM";
		change(a);
		System.out.println(a);
	}
}

结果:

I am RM

现在再看下开头的话,就会很清晰了。

附录:

基本数据类型:byte, short, int, long, float, double, char ,boolean

引用数据类型:数组,类,接口。

String类如同例三,存在特殊情况。(由于String的值在创建之后不能被改变,任何对String对象的改变都相当于重写创建一个新对象)


猜你喜欢

转载自blog.csdn.net/m0_37657585/article/details/80710128