Java中swap()方法的实现
来源:互联网 发布:mysql mssql 编辑:程序博客网 时间:2024/06/03 19:52
又看到了请指针和引用的部分,又会有经典的swap()方法的实现。几乎所有人都知道了,要实现一个正确的swap()方法需要以指针或引用为参数,例如:
C代码
- //使用指针
- void swap(int* a, int* b){
- int tmp = *a;
- *a = *b;
- *b = tmp;
- }
- //使用引用
- void swap(int& a,int& b){
- int tmp = a;
- a = b;
- b = tmp;
- }
突然就想到,在Java中需要怎么实现这个过程呢?Java中没有所谓的指针和引用的概念,并且Java中所有的传递都是值传递,也就是说,下面的方法在Java中同样没有效:
- void swap(int a, int b){
- int tmp = a;
- a = b;
- b = tmp;
- }
所以这是相当尴尬的事。为了实现一个正确的交换过程,好像必须做一些更复杂的事。
如果a,b是类中两个成员变量,那可以直接写如下方法:
- int a = 4;
- int b = 5;
- public void swap(){
- int tmp = a;
- a = b;
- b = tmp;
- }
因为Java中所有的方法、变量必须在一个类中声明,所以此时a,b和swap()在同一个类中,因此不需要传递参数,在swap()方法中就直接引用对象的成员变量。
另一个方法就是通过重新赋值的方式进行,例如可以写一个变量方法:
- public static int[] swap(int a1, int a2){
- int tmp = a1;
- a1 = a2;
- a2 = tmp;
- return new int[]{a1,a2};
- }
根据传递进来时的顺序,最后再重新取回对应的值,例如:
- int a = 4;
- int b = 5;
- int[] swap = swap(a, b);
- a = swap[0];
- b = swap[1];
- System.out.println(a+" "+b);
看来没有指针或引用,也是有很大问题,按理,以下方法应该适用于所有的交换:
- public static <T> void swap(T t1, T t2){
- T tmp = t1;
- t1 = t2;
- t2 = tmp;
- }
不过,测试过后就会发现,这个方法总是失效的。所以我们总是必须想到其他的方式来实现。
- Java中swap()方法的实现
- (转)Java中swap()方法的实现
- java中swap()的实现
- java中swap函数的实现分析
- java中实现swap函数的几种方式
- SWAP方法的四种实现方式
- Swap的几种方法(Java版本)
- rhel7中实现swap的扩展
- JAVA实现swap
- 利用java实现swap
- java中如何实现swap(int a,int b)
- 制作SWAP的方法
- swap的方法书写
- swap扩展的方法
- 制作swap的方法
- swap三种实现方法
- 交换函数swap的三种实现方法
- 交换函数swap的三种实现方法
- connect 是 errno 为111 115 101 22 错误分析
- Windows 8 磁贴模板(tile template)
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
- [转贴]TinyXml学习笔记
- MS SQL 游标
- Java中swap()方法的实现
- cin,cin.get,cin.getline;scanf,getchar;scanf,gets
- 解决root用户ftp登陆问题
- 学习SQL
- 一致的数据访问技术ADO/OLE DB
- sys用户远程登录ora-01031错误的解决
- concat和concat_ws()区别及MySQL的几个实用字符串函数
- java中断言的使用
- IT人生 需要指引