需求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
结果:交换值成功。