学过C或C++的同学,都知道,要在方法中实现两个数的交换,可以使用指针来解决,数据没有实现交换的问题。
但是,java中没有指针的概念,那我们有没有办法,将交换数据的实现写在方法中那。,,通过百度,好多人都说:java不好能将交换写在方法中,,,不过有一个人,说可以借助类的成员变量,来实现。对于我这个有点强迫症的人来说,觉得本应该很简单的问题,居然没能解决出来。所以破解的找到解决办法:我通过测试:结果真的通过类 实现了两个数的交换(我是个初学者,不知道自己写的方法正不正确,算不算用方法试下那两个数的交换,还请高数,给出评价,,最好给出一更好的解释,,,当然初学者也可以发表自己的看法)代码如下(包括四种实现两个数据交换的方法):
- public class Test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int a=10;
- int b=20;
- //将数值赋值给对象的成员变量
- Num n=new Num(a,b);
- MethodO(n);
- //MethodT(a, b);
- //MethodTH(a, b);
- //MethodF(a, b);
- //输出的时候一定要输出:对象中的成员变量
- System.out.println("a:"+n.a+",b:"+n.b);
- }
- //方式一:采用第三方变量
- public static void MethodO(Num n){
- int c=n.a;
- n.a=n.b;
- n.b=c;
- }
- //方法二:异或运算符
- public static void MethodT(Num n){
- n.a=n.a^n.b;
- n.b=n.a^n.b;//a^b^b=a
- n.a=n.a^n.b;//a^b^a=b
- }
- //方法三:小学加减法
- public static void MethodTH(Num n){
- n.a=n.a+n.b;
- n.b=n.a-n.b;
- n.a=n.a-n.b;
- }//方法四:一句搞定
- public static void MethodF(Num n){
- n.a=n.a+n.b-(n.b=n.a);
- }
-
- }
- class Num{
- int a;
- int b;
- public Num(int a, int b) {
- super();
- this.a = a;
- this.b = b;
- }
-
-
- }
复制代码
期盼大家积极讨论、有问题提出批评、建议,我再进行改正 |
|