这两天 学习了基本数据类型和部分引用数据类型(数组)。 并且老师的视频中也有例子如下:class Test3_Array {
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); //?*/
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b) { //a = 10, b= 20
System.out.println("a:"+a+",b:"+b); //a = 10,b = 20
a = b; //a = 20
b = a + b; //b = 40
System.out.println("a:"+a+",b:"+b); //a = 20, b = 40
}
public static void change(int[] arr) { //1,4,3,8,5
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}
上面的执行结果发现 change(a,b);对原参数不起作用,只是交换函数中的临时变量的值,那么该如何用函数实现两个数的交换呢?
带着疑问,今天开始了探索。
之前接触过C, 记得C语言可以通过函数传递需要交换的两个值得地址,就可以实现这个功能,函数代码如下:
void swap(int *i, int *j)
{
int temp;
temp=*i;
*i=*j;
*j=temp;
}
这种方式在Java中肯定不能用,因为Java不支持指针。
记得C++中还有一种引用的实现方法,代码如下:
void swap(int &i, int &j)
{
int temp;
temp=i;
i=j;
j=temp;
}
测试了一下上面这种方式,编译报错, Java应该也是不支持这种类型的编程。
那么,难道Java 就真的不支持 以函数的方式实现该功能吗? 求教大神,帮忙答疑解惑,万分感谢。
|
|