java值传递的理解

Java中的参数传递都是值传递,没有引用传递

     值传递的概念:值传递会为所传递的对象重新开辟一块空间,于是对所传对象的操作不会影响到原来的对象。

     如果传递的是基本数据类型和String类型的变量,在传入到函数的时候,会重新开辟一段空间

     如果传递的是引用数据类型的变量,在传入该引用变量(引用作为指向该地址的一个变量,存储的是指向该对象的地址,这个变量其实也是一个值,所以也是值传递)的时候,如果是在该方法空间中指向一块新的地址,则改变不会反应到原先的对象上,如果没有,则在方法空间中修改。会反映到原先的对象上。

 

1、在实际的使用过程中,我们不必纠结那么多,原生数据类型和String,在传入函数的时候,不管函数里面做什么,他的值都不会被修改。引用类型传递到函数中,只要函数中不是让参数指向一个新建的对象,那么函数中的修改会反映到此引用类型上。

2、平时的处理上,可以把String和原生数据类型放在同一类的情况下使用,因为Java内部使用了很多的机制,让String看起来跟原生数据类型一样。但是String归根结底是一个引用类型,如在进行比较时,其他原生数据类型可以使用==,而String必须使用equals方法才能比较其内部的值(这点C#做的非常好,直接使用==,不让程序员过分的了解底层,我在做C#编程的过程中,甚至从来都没有觉得string和值类型有什么不同)。

3Java确实是只能传值,不能传引用。所谓传引用,只在CC++的传指针和C#ref中存在。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值