JAVA中关于变量赋值的机制(值传递机制)

JAVA中关于变量赋值的机制(值传递机制)

1.如果变量是基本数据类型,此时赋值的是数据的实际值,即实参传递给形参的是实参的值
2.如果变量是引用数据类型,此时赋值的是保存数据的地址值,即实参传递给形参的是实参的地址

代码示例:

/*
JAVA中关于变量赋值机制

1.如果变量是基本数据类型,此时赋值的是数据的实际值,即实参传递给形参的是实参的值
2.如果变量是引用数据类型,此时赋值的是保存数据的地址值,即实参传递给形参的是实参的地址

 */
public class ValueTransferTest {
    public static void main(String[] args){
        int m = 10;
        int n = m;
        System.out.println("m = " + m + ", n = " + n);//m = 10. n = 10
        n = 20;
        System.out.println("m = " + m + ", n = " + n);//m = 10, n = 20

        Number n1 = new Number();
        n1.num = 100;

        Number n2 = new Number();

        n2.num = n1.num;
        System.out.println("n1.num = " + n1.num + ", n2.num =" + n2.num);//n1.num = 100, n2.num =100

        n2.num = 101;
        System.out.println("n1.num = " + n1.num + ", n2.num =" + n2.num);//n1.num = 100, n2.num =101

        Number n3 = n1; //指向堆空间中同一个对象实体
        System.out.println("n1.num = " + n1.num + ", n3.num =" + n3.num);//n1.num = 100, n3.num =100

        n3.num = 111;
        System.out.println("n1.num = " + n1.num + ", n3.num =" + n3.num);//n1.num = 111, n3.num =111

        //实参传递形参实际数据值
        ValueTransferTest v1 = new ValueTransferTest();
        int a = 10;
        int b = 20;
        v1.swap(a,b);//a = 20, b = 10
        //传入a,b值之后在swap中进行了交换,但调用结束swap中,a和b被销毁
        //实参传递给形参的是真实数据值
        //再输出,则是输出main方法的a和b的值,
        System.out.println("a = " + a + ", b = " + b);//a = 10, b = 20


        //实参传递形参数据地址
        Data d1 = new Data();
        d1.a = 15;
        d1.b = 25;
        System.out.println("a = " + d1.a + ", b = " + d1.b);//a = 15, b = 25

        //引用数据类型,相当于在swap里面data和d1指向同一个地址
        v1.swap(d1);//a = 25, b = 15
        System.out.println("a = " + d1.a + ", b = " + d1.b);//a = 25, b = 15

    }
    public void swap(int a, int b){
        int tem = a;
        a = b;
        b = tem;
        System.out.println("a = " + a + ", b = " + b);

    }

    public void swap(Data data){
        int tem = data.a;
        data.a = data.b;
        data.b = tem;
        System.out.println("a = " + data.a + ", b = " + data.b);
    }

}
class Number{
    int num;
}

class Data{
    int a;
    int b;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值