首页 > 编程语言 > 详细

Java中的swap函数(转载)

时间:2020-04-14 10:23:20      阅读:54      评论:0      收藏:0      [点我收藏+]

首先,我们来回顾下C语言中的swap函数设计

传值:不能从根本上交换两数

#include <stdio.h>

void swap(int a, int b) {

int temp;

temp = a; a = b; b = temp;

}

 


传引用:在C语言中,应该称地址

#include <stdio.h>

void swap(int &a, int &b) {

int temp;

temp = a; a = b; b = temp;

}

 


那问题来了,java中没有指针的说法,对普通变量也没有引用,那我们要怎么对普通类型的变量进行引用传递呢?

方法一:利用数组

public static void swap(int[] data, int a, int b) {

int temp;

temp = data[a]; data[a] = data[b]; data[b] = temp;

}

 


方法二(误导):通过java中的包装类Integer进行引用传递,结果:失败,因为java中的包装类不允许改变数据域,个人理解为:java不会提供包装类Integer数据地址,即引用,而是提供表面数据

方法三:定义自己的包装类MyInteger

static class MyInteger { 
private int x; 
public MyInteger(int x) {
this.x = x; 
} 
public int getValue(){ 
return x; 
} 
public void changeValue(int x) { 
this.x = x; 
}
}

public static void swap(MyInteger a, MyInteger b) {
int t = a.getValue(); 
a.changeValue(b.getValue()); 
b.changeValue(t); 
}

 


方法四:外部内联,直接利用本类

public class Sort {
 int a, b;
 public Sort(int a, int b) {
     this.a = a;
     this.b = b;
 }
 public void swap() {
     int temp;
     temp = a; a = b; b = temp;
 }
}

 

以上,个人参考
参考:https://blog.csdn.net/dadoneo/article/details/6577976

Java中的swap函数(转载)

原文:https://www.cnblogs.com/cocobear9/p/12695257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!