方法参数+实例演示

我们只通过代码来直接解释:
看似很长其实内容很简单:

下面我们对数值交换,数组交换进行,字符串交换,一一讲解

	//定义n,m并赋值。然后调用方法来进行交换
		int n =10;
		int m =20;
		exchange(n, m);
		System.out.println(n);
		System.out.println(m);

由于java的递都是数值传递。所以这次交换完之后:n = 10;m = 20;
这是因为在交换的时候是数值交换,先将数值传给方法里面的a,b;然后a,b之间在新的一块区域进行交换,交换完之后方法收回,a与b之间的运算也就收回了,而对于n,m没有一点的影响。所以输出的还是原来的数。

下面定义的数组:

int [] i= {1,3};
		int [] j= {2,4};
		exchange(i,j);
		System.out.println(Arrays.toString(i));
		System.out.println(Arrays.toString(j));
		
		exchange1(i, j);
		System.out.println(Arrays.toString(i));
		System.out.println(Arrays.toString(j));

对于第一次输出数组和上面一样,java的传递时值 传递,所以,输出的还是原来。
而对于第二次输出,由于java是直传递,a与b里面的指向的是i,j,这时候进行交换,这时候交换的就是i,j,而不是单纯的a,b,所以这次交换完的就是2,3;1,4
下面定义的是字符串的交换:

String s1 = "123";
		String s2 = "456";
		exchange(s1,s2);
		System.out.println(s1);
		System.out.println(s2);
		

这个交换也和第一个一样,通过调用exchange方法来进行交换,先将s1,s2里面的值传给a,b,然后进行交换,此次交换完之后方法回收,a,b作用后的运算都会消失,与s1,s2没有关系,所以还是输出的原来的值。

下面定义了个用户:

User u1=new User();
		u1.name="张三";
		User u2=new User();
		u2.name="李四";
		exchange(u1, u2);
		System.out.println(u1.name);
		System.out.println(u2.name);
		
		exchange1(u1, u2);
		System.out.println(u1.name);
		System.out.println(u2.name);

这个第一个交换和第一个一样,没有变话,而第二个a,b调用了name,这样指针指的就是u1,u2。而交换完之后方法回收,这时候a,b就没了,而u1,u2发生了变化,所以交换的就是u1,u2的值了。

下面定义了一些数方法来实现交换:

	public static void exchange(int a ,int b) {
		int temp=a;
		a=b;
		b=temp;
	}
	public static void exchange(int []a, int [] b) {
		int []temp=a;
		a=b;
		b=temp;
	}
	public static void exchange1(int []a, int [] b) {
		int temp=a[0];
		a[0]=b[0];
		b[0]=temp;
	}
	public static void exchange(String a,String b) {
		String temp=a;
		a=b;
		b=temp;
	}
	public static void exchange(User a,User b) {
		User temp=a;
		a=b;
		b=temp;
	}
	public static void exchange1(User a,User b) {
		String temp=a.name;
		a.name=b.name;
		b.name=temp;
	}
发布了40 篇原创文章 · 获赞 5 · 访问量 9474

猜你喜欢

转载自blog.csdn.net/qq_40873540/article/details/98517437