黑马程序员技术交流社区

标题: 求解!!!!怎么自定义方法,交换两个变量的值 [打印本页]

作者: Buer    时间: 2016-7-17 20:17
标题: 求解!!!!怎么自定义方法,交换两个变量的值
代码如下。  引用函数时,必须要用实参。但要怎么处理,才能交换变量值呢?????????
public static void main(String[] args){       
        int a = 10;
        int b = 20;
        swap( a, b);
        System.out.println("交换后,a =" + a +" , b =" + b);
        }
        //自定义的交换方法
        public static void swap(int a, int b) {
                int temp = 0;
                  temp = a;
                  a = b;
                  b = temp;
        }
作者: xfbyxq    时间: 2016-7-17 20:39
6666666666666666666666666666666666666666666
作者: xfbyxq    时间: 2016-7-17 20:40
6666666666666666666666666666666666666666666
作者: cat73    时间: 2016-7-17 20:46
这在 Java 中是不可能做到的。。。
作者: cat73    时间: 2016-7-17 20:52
本帖最后由 cat73 于 2016-7-17 20:53 编辑

这种调用真的是传的值。。。
到了函数内这俩参数跟函数外的变量没有任何关系。。。

妮真的想做到的话。。。
我有几个思路。。。
1. ASM 库改 class
2. Hook System.out
3. 搞明白 JVM 的内存分配,从栈上直接替换这俩变量的值

作者: cat73    时间: 2016-7-17 20:53
第二种思路可以参考我的这篇帖子:
http://bbs.itheima.com/thread-171478-1-1.html
作者: Buer    时间: 2016-7-17 23:25
cat73 发表于 2016-7-17 20:52
这种调用真的是传的值。。。
到了函数内这俩参数跟函数外的变量没有任何关系。。。


刚学到数组,面向对象学懂了再来研究你的话
作者: qetu001212    时间: 2016-7-17 23:30
其实你也可以试试这样~~~
        public static void swap(int a, int b) {
                a = a + b;
                b = a - b;
                a = a - b;
        }
或者这样~~~
        public static void swap(int a, int b) {
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;
        }
作者: zhangjiesss    时间: 2016-7-18 08:06
class Demo
{
        public static void main(String[] args)
        {
                class Swap
            {
                        void show(int a,int b)
                        {
                                int temp=a;
                                a=b;
                                b=temp;
                                System.out.println("交换后,a =" + a +" , b =" + b);
                        }       
                }
                Swap s=new Swap();
                s.show(10,20);
    }
        
}

作者: HEBEIREN    时间: 2016-7-18 08:18
你没有弄清楚复制传值和地址传值的区别,你这样定义只是复制了一份a和b到swap函数中,原来的a和b并没有和swap函数中的a和b产生任何联系。所以交换不成功。
作者: Buer    时间: 2016-7-18 12:06
HEBEIREN 发表于 2016-7-18 08:18
你没有弄清楚复制传值和地址传值的区别,你这样定义只是复制了一份a和b到swap函数中,原来的a和b并没有和sw ...

求教,地址传值需要用到什么知识呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2