Java中的值交换

值交换

一、基本数据类型值交换

class Demo {

	public static void change(int a, int b) {
		int temp = a;
		a = b;
		b = temp;
	}

	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("交换之前:"+"a= "+a+" b= "+b); //交换之前:a= 10 b= 20
		change(a,b);
		System.out.println("交换之后:"+"a= "+a+" b= "+b); //交换之后:a= 10 b= 20
	}
}

换值前后没有变量的值发生变化。
原因:
主函数运行的时候会在栈内存中开辟属于自己的空间,当主函数调用change函数时,也会在栈内存中开辟属于自己的空间,并有自己的a、b变量;当change方法结束之后,change方法中的a、b变量也同时消失。

重点:
1.形式参数是数据所属函数的局部变量。
2.不同函数的局部变量与局部变量是相互独立的,没有任何的关系。

基本数据类型值交换

二、数组类型值交换

class Demo {

	public static void change(int[] arr, int index1,int index2) {
		int temp = arr[index1];
		arr[index1] = arr[index2];
		arr[index2] = temp;
	}

	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5,6};
		System.out.println("交换之前:"+Arrays.toString(arr)); //交换之前:[1, 2, 3, 4, 5, 6]
		change(arr,1,2);
		System.out.println("交换之后:"+Arrays.toString(arr)); //交换之后:[1, 3, 2, 4, 5, 6]
	}
}

交换成功。原因:main方法中与change方法中操作的是同一个对象。

注意:1.两个函数的arr还是不同的。2.arr这两个不同的变量操作了相同的对象,所以交换成功。

数组类型的值交换

三、对象的值交换

class MyTest{
	int x = 10;
	public MyTest(int x) {
		this.x = x;
	}
}

class Demo {

	public static void change(MyTest myTest,int x) {
		myTest.x = x;
	}

	public static void main(String[] args) {
		MyTest myTest = new MyTest(1);
		System.out.println("修改之前:"+myTest.x); //修改之前:1
		change(myTest,2);
		System.out.println("修改之后:"+myTest.x); //修改之后:2
	}
}

交换成功:不同的引用类型变量操作同一个对象,肯定会影响到结果。

对象的值交换

四、字符串的值交换

class Demo {

	public static void change(String source,String target) {
		source = target;
	}

	public static void main(String[] args) {
		String str = "CSDN_HCX";
		System.out.println("修改之前:"+str); //修改之前:CSDN_HCX
		change(str,"JS_HCX");
		System.out.println("修改之后:"+str); //修改之后:CSDN_HCX
	}
}

交换失败

字符串的值交换

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值