Java实现方法中基本类型参数按地址传递

参考了网上的一些资料,自己总结了一下,详细的可以去以下的博主看看

https://www.cnblogs.com/lixiaolun/p/4311863.html
http://blog.csdn.net/maoyeqiu/article/details/49250339

这里我搜到有两种方法解决这个问题:

不改变值得代码如下:

package com.other.test;

public class Test {
    public static void change(int i, int j) { 
        int temp = i; 
        i = j; 
        j = temp;
    } 

    public static void main(String[] args) { 
        int a = 3; 
        int b = 4; 
        change(a, b); 
        System.out.println("a=" + a); 
        System.out.println("b=" + b);
    }
}

输出的结果是 a=3 b=4,传递的值并不会改变原值

方法一:(数组)

package com.other.test;

public class Test {
    public static void change(int[] counts) { 
        counts[0] = 6; 
        System.out.println(counts[0]);
    } 

    public static void main(String[] args) { 
        int[] count = { 1, 2, 3, 4, 5 }; 
        change(count);
        System.out.println(count[0]);
    } 
}

输出结果是6 6 也就是引用的值改变了原来的值

方法二:(对象)

package Test;

import java.util.Scanner;

class dataWrap
{
    int a;
    int b;
}
public class lsk{

        public static void swap(dataWrap dw)
        {
            int tmp=dw.a;
            dw.a=dw.b;
            dw.b=tmp;
            System.out.println("swap方法里,成员变量的值是"+dw.a+":b成员变量的值是"+dw.b);
        }

        public static void main(String[] args)
        {
            dataWrap dw=new dataWrap();
            dw.a=6;
            dw.b=9;
            swap(dw);
            System.out.println("变换后,a成员变量的值是"+dw.a+":b成员变量的值为:"+dw.b);
        }
}

运行结果为:
swap方法里,成员变量的值是9:b成员变量的值是6
变换后,a成员变量的值是9:b成员变量的值为:6

方法二基于对象的也可以这样子实现:

public class Test {

private static Integer a;
private static Integer b;

public void setA(Integer a) {
this.a = a;
}

public void setB(Integer b) {
this.b = b;
}

/* 在此方法中实现交换两个参数的值 */
public void swap(Integer a, Integer b) {
setA(b);
setB(a);
}

public static void main(String[] args) {
a = new Integer(10);
b = new Integer(5);
System.out.println("a=" + a + "\tb=" + b);
new Test().swap(a, b);
System.out.println("a=" + a + "\tb=" + b);
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值