Java中方法的参数传递机制/实参/形参

案例:

public class Test {
	public static void mian(String[] args){
		int i = 1;
		String str = "hello";
		Interger num = 2;
		int[] arr = {1,2,3,4,5};
		MyData my = new MyData();

		chang(i,str,num,arr,my);
		
		System.out.println("i = "+ i);
		System.out.println("str = "+ str);
		System.out.println("num = "+ num);
		System.out.println("arr = "+ arr.toString(arr));
		System.out.println("my.a = "+ my.a);
	}
	public static void change(int j,String s,Integer n,int[] a,MyData m){
		j += 1;
		s += "world";
		n += 1;
		a[0] += 1;
		m.a += 1;
	}
	class MyData{
		int a = 10;
	}
}

输出结果:
Java中方法的参数传递机制/实参/形参_第1张图片
Java中方法的参数传递机制/实参/形参_第2张图片

i——基本数据类型——传递数据值——不变;
str——引用数据类型(String)——传递地址值——不变;
num——引用数据类型(包装类)——传递地址值——不变;
arr——引用数据类型(数组)——传递地址值——变;
my——引用数据类型(对象)——传递地址值——变;

方法的参数传递机制:

  1. 形参是基本数据类型
    传递数据值

  2. 实参是引用数据类型
    传递地址值
    特殊的类型:String、包装类等对象不可变性

总结:

  • 方法中的参数是形参,调用处传过来的参数是实参。
  • java的基本数据类型是传值调用,对象引用类型是传引用。
  • 当传值调用时,改变的是形参的值,并没有改变实参的值,实参的值可以传递给形参,但是,这个传递是单向的,形参不能传递回实参。
  • 当引用调用时,如果参数是对象,无论对对象做了何种操作,都不会改变实参对象的引用,但是如果改变了对象的内容,就会改变实参对象的内容。

你可能感兴趣的:(Java中方法的参数传递机制/实参/形参)