java交换两个数字位置

第一种:在main输出,通过反射实现 1     public static void main(String[] args) throws Exception {
 2         Integer a = 1;
 3         Integer b = 2;
 4         swap(a, b);
 5         System.out.println("a=" + a + "--------b=" + b);
 6     }
 7
 8     public static void swap(Integer i1, Integer i2) throws Exception {
 9         // 这里怎么改,不能在这里输出,使main方法的a,b两值进行交换
10         Integer temp = new Integer(i1.intValue());
11         Field i1Value = i1.getClass().getDeclaredField("value");
12         i1Value.setAccessible(true);
13         i1Value.set(i1, i2.intValue());
14         Field i2Value = i2.getClass().getDeclaredField("value");
15         i2Value.setAccessible(true);
16         i2Value.set(i2, temp);
17
18     }
 //第二种简单的交换之类的 1 /**
 2  * 交换值演示,演示了空间换时间,和时间换空间的简单例子.
 3  *
 4  * @author weep
 5  *
 6  */
 7 public class SwapAB {
 8     public static void main(String[] args) {
 9         // 两种值交换的方式,用中间变量空间复杂度高于不用中间变量,但时间复杂度要低于不用中间变量.
10
11         // 常规写两个值的交换
12         int a = 100;
13         int b = 200;
14         System.out.println("初始值 a=100 b=200");
15         // 中间变量
16         int c;
17
18         // 复制给中间变量,临时存
19         c = a;
20         // 把b的值赋给a.
21         a = b;
22         // 把c中存的a的初始值赋给,至此完成了常规的值交换
23         b = c;
24         System.out.println("a = " + a + ", b = " + b);
25         // 不用中间变量的写法
26         a = a + b;
27         b = a - b;
28         a = a - b;
29
30         System.out.println("a = " + a + ", b = " + b);
31
32         // 第二种不用中间变量,换运算,效率比加法高点
33         a = a ^ b;
34         b = a ^ b;
35         a = a ^ b;
36
37         System.out.println("a = " + a + ", b = " + b);
38
39     }
40 }  
时间: 2024-10-03 13:45:22

java交换两个数字位置的相关文章

Java交换两个数字

一.四种方式交换两个数字 直接交换:失败 包装类交换:失败 数组方式交换:成功 成员变量交换:成功 1 public class SwapNumbers { 2 public int a; 3 public int b; 4 5 //包装类交换 6 public static void swap (Integer a, Integer b) { 7 Integer temp = a; 8 a = b; 9 b = temp; 10 } 11 12 //直接交换 13 public static

使用引用交换两个数字

#include <iostream> using namespace std; //定义一个函数,用于交换两个变量的值 void swap(int &a, int &b); void main() { int i = 3, j = 5; cout<<"交换前:i="<<i<<" j="<<j<<endl; swap(i,j); cout<<"交换后:i=&

C语言不定义中间变量交换两个数字的源码

内容过程中,把写内容过程中经常用到的内容收藏起来,如下内容是关于C语言不定义中间变量交换两个数字的的内容,应该能对码农也有用途. #include<stdio.h>main(){int a, b;printf("please input a:");printf("please input b:");printf("a=%d,b=%d", a, b);b=b^a;a=a^b;} 原文地址:https://blog.51cto.com/1

java交换两个数的常见方法及效率测试

原文地址--http://blog.csdn.net/qq525099302/article/details/47294443 论两个数的交换的重要性 讨论交换两个数的方法对某些人来说无聊,但某些人很乐意探究,甚至某些面试官喜欢用这个做文章.刚出来找工作笔试的时候我也碰到与之相关的问题. 常见的两个数交换的方法 边赋值边运算 加减减交换 用中间变量交换 异或交换 下面是代码 public class Test { public static void main(String[] args) {

Jquery 动态交换两个div位置并添加Css动画效果

前端网页开发中我们经常会遇到需要动态置换两个DIV元素的位置,常见的思路大多是不考虑原始位置,直接采用append或者appendTo方式将两元素进行添加,该法未考虑原始位置,仅会添加为元素的最后一子元素. 今天将给大家介绍一种位置交换方式(判断兄弟元素是否存在),并添加简单的css效果. 设计思路 判断元素后边是否存在兄弟元素:存在则通过insertBefore方法将另一元素添加至其兄弟元素前,否则则直接采用appendTo方法添加至父元素. 核心代码 1.判断其后边是否存在兄弟元素 1 fu

C++ 系列:交换两个数字

1. 创建中间变量 这是最快也是最简单的办法,例如: #include<stdio.h> int main(){ int a=10; int b=20; int temp; printf("交换前a,b的值为:\n"); printf("a=%d\n",a); printf("b=%d\n",b); temp=a; b=a; a=temp; printf("交换后a,b的值为:\n"); printf("

java面试之位运算(如何不通过第三方变量交换两个数字,效率最高的乘法运算)

class Demo2_Operator { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变. */ //System.out.println(5 ^ 10 ^ 10); //System.out.println(5 ^ 10 ^ 5); /* * 请自己实现两个整数变量的交换(不需要定义第三方变量) * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型.

Java 交换两个变量的数值

一.参数传递方法 为解决标题问题,首先介绍参数传递方法.目前各类程序设计语言的参数传递方法主要有三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值:按引用传递表示方法(函数)接收的调用者提供的变量地址:按指针传递表示方法(函数)接收的是调用者提供的指针的拷贝,不改变指针的值和地址,但可以改变指针所指向的地址. 二.Java参数传递方法 Java提供的参数传递方法,很遗憾只有一种,按值传递.也就是说,方法得到的是所有参数值的一个拷贝

(转)Java 交换两数的方法

错误示范 1. 直接交换 1 public class SwapNumbers { 2 3 // 直接交换 4 public static void swap(int a, int b) { 5 int temp = a; 6 a = b; 7 b = temp; 8 }; 9 10 public static void main(String[] args) { 11 int a = 10; 12 int b = 20; 13 System.out.println("交换前: a = &quo