JAVA的swap实现

1|0JAVA的swap实现

JAVA不能操作地址,所以不能像CPP那样方便地实现对基本数据类型的swap

  • java中的基本数据类型传递属于引用传递,并不会像c/c++实现指针传递;
  • 通过包装类对象配合反射可以实现数据的交换。

只能通过以下几种方式。

1|0通过数组对象交换

public class TestSwap { public static void main(String[] args){ int a = 3; int b = 5; System.out.println("交换前:"+"a="+a+" b="+b); //以数组接收后赋值,注意赋值顺序,注意对应关系 int[] arr = swap(a,b); a = arr[0]; b = arr[1]; System.out.println("交换后:"+"a="+a+" b="+b); } //交换 private static int[] swap(int x, int y){ //以数组形式返回 return new int[]{y,x}; } }

1|1通过类对象属性交换

public class TestSwap { // 定义类变量 private int a = 3; private int b = 5; public static void main(String[] args) { TestSwap ts = new TestSwap(); System.out.println("交换前:"+"a="+ts.a+" b="+ts.b); //对象调用 ts.swap(); System.out.println("交换后:"+"a="+ts.a+" b="+ts.b); } //交换 只能运用在对象只有两个类变量时,交换这两个确定的变量 private void swap() { int temp = this.a; this.a = this.b; this.b = temp; } }

1|0通过自定义包装类对象交换

//MyInteger: 与Integer有些类似,但是其对象可以变值 class MyInteger { private int x; // 将x作为唯一的数据成员 public MyInteger(int xIn) { x = xIn; } // 构造器 public int getValue() { return x; } // 得到值 public void setValue(int xIn) { x = xIn;} // 改变值 } public class Swapping { // swap: 传对象引用 static void swap(MyInteger rWrap, MyInteger sWrap) { // 变值过程 int t = rWrap.getValue(); rWrap.setValue(sWrap.getValue()); sWrap.setValue(t); } public static void main(String[] args) { int a = 23, b = 47; System.out.println("Before. a:" + a + ", b: " + b); MyInteger aWrap = new MyInteger(a); MyInteger bWrap = new MyInteger(b); swap(aWrap, bWrap); a = aWrap.getValue(); b = bWrap.getValue(); System.out.println("After. a:" + a + ", b: " + b); } }

__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17865579.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示