你这个打印的还是main方法里面定义的局部变量,传递参数是不会转变参数的值的 建议楼主好好看一下canshuchu

解决方案 »

  1.   

    据可靠消息说: java中的参数的传递有值传递和引用传递 
    值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
    引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
      

  2.   


    package test;
    public class Swap {    static class Integer {        private int value;        Integer(int value) {
                this.value = value;
            }        public void set(int value) {
                this.value = value;
            }        @Override
            public String toString() {
                return String.valueOf(value);
            }
        }
        public static void Swapit(Integer a, Integer b) {
            int temp;
            temp = a.value;
            a.set(b.value);
            b.set(temp);    }    public static void main(String[] args) {        Integer a = new Integer(5);
            Integer b = new Integer(8);
            System.out.println("交换之前:");
            System.out.println("a=" + a + " b=" + b);
            Swapit(a, b);
            System.out.println("交换之后:");
            System.out.println("a=" + a + " b=" + b);    }
    }运行结果:交换之前:
    a=5 b=8
    交换之后:
    a=8 b=5
      

  3.   

    局部变量,出栈就没了,采用就近原则,取进入方法前的值。给你一个数值交换的好东西:a = b+0*(b=a);