Java中基本数据类型赋值机制与数组的赋值机制

基本数据类型赋值

首先运行一下以下的代码,注意查看结果,可以发现n2的值并没有随着n1值给便而改变。

这种数据赋值方式为值拷贝!!!!,仅仅将数据的值拷贝走,并没有管理他的地址。


public class Test {
    public static void main(String [] args){
        int n1=10;
        int n2=n1;
        n1=80;
        System.out.println(n1);
        System.out.println(n2);
    }
    }


jvm内存结构包括栈,堆与方法区。下面来说一下原理,定义n1=10,其结果直接存储在jvm虚拟机的栈中,同样n2=n1,直接找到n1的对应的值,将10传值给n2。所以n1的改变不影响n2。

 

数组类型的赋值

运行以下代码,数据的赋值类型为地址拷贝(引用赋值),即拷贝的是对应对象的地址。观察运行结果可以发现其两个数组的地址一模一样。

import java.util.Arrays;

public class Test {
    public static void main(String [] args){
        int []n1={10};
        int []n2=n1;
        n1[0]=80;
        System.out.println(Arrays.toString(n1));
        System.out.println(Arrays.toString(n2));
        //打印出他们的地址
        System.out.println(n1);
        System.out.println(n2);
    }
    }


在数组赋值时候,栈中存放的为响应的地址,这也是为什么直接输出n1的时候是一个地址值,而n2数组取值时候接受到n1对应的地址,所以当n1改变时候,n2也会随着改变,这就是引用赋值

 

 总结

看到这里学过c语言的小伙伴可以发现,这个其实和c的指针很像,是因为Java把c语言中的指针封装了,在Java中没有指针这一概念的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值