第二十九、Java之值传递


需求1: 定义交换数值的功能函数,基本类型数据, 数组,实例对象, String。

基本数据类型交换

//需求1:定义一个函数交换两个基本类型变量的值。 
class MyClass{

//值交换
	public static void changeValue(int a , int b){
		int temp = a;
		a = b;
		b = temp;
		System.out.println("方法内部交换的值:a = "+a +" b="+b);
	}


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

	}
}

运行结果:

LoveQideMacBook-Pro:desktop loveqi$ javac MyClass.java 

LoveQideMacBook-Pro:desktop loveqi$ java MyClass

方法内部交换的值:a = 20 b=10

交换之后的值:a = 10 b=20


结果:发现交换值前后没有变量的值发生变化。

原因分析:




//需求2: 定义一个函数交换数组中两个 元素的位置

import java.util.*;
class MyClass{

//需求2: 定义一个函数交换数组中两个 元素的位置。
	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));
		change(arr,1,3);
		System.out.println("交换后数组的元素:"+ Arrays.toString(arr));

	}
}

运行结果如下:

LoveQideMacBook-Pro:desktop loveqi$ javac MyClass.java 

LoveQideMacBook-Pro:desktop loveqi$ java MyClass

交换前数组的元素:[1, 2, 3, 4, 5, 6]

交换后数组的元素:[1, 4, 3, 2, 5, 6]


结果:交换值成功。

原因分析:操作的是同一个数组对象。



对象的值交换:

class Test{

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

class MyClass{

//需求3: 对象的值交换
	public  static void change(Test test,  int  x){
		test.x = x;
	}


	public static void main(String[] args) 
	{
		Test test = new Test(1);
		System.out.println("改变值之前:"+ test.x);
		change(test,2);
		System.out.println("改变之后:"+ test.x);

	}
}

运行结果如下:

LoveQideMacBook-Pro:desktop loveqi$ java MyClass

改变值之前:1

改变之后:2


结果:交换值成功。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值