在java中什么是参数传递机制?

1.java内存分为栈内存和堆内存;基本数据类型存放在栈内存中,引用数据类型是把指向引用变量的地址存入栈内存,把引用变量的真正内容存入堆内存。

2、Java参数,不管是基本数据类型还是引用类型,传递的都是副本(java传参是传引用还是传值,网上争论很多)

3、如果参数类型是基本数据类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值。因为在函数中的变量是局部变量,this.类中成员变量才是类变量。

4、如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。

     如果在函数中没有改变这个副本的地址,而是通过地址改变了地址指向的值,那么在函数内的改变会影响到传入的参数。

     如果在函数中改变了副本的地址,如当执行如a=其他对象,a=new等赋值操作时,实际上是将a指向新的位置,那么函数外的原值不改变。除非用this.a=其他对象或this.a=new xxx()表示,直接对类属性进行操作才会改变原始值。

5、在 Java 应用程序中永远不会传递对象,而只传递对象引用(指栈内存中对应的地址)。因此是按引用传递对象。Java应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。参数可以是对象引用,而 Java 应用程序是按值传递对象引用的。

  1. 对象是按引用传递的;

  2. Java 应用程序有且仅有的一种参数传递机制,即按值传递;

  3. 按值传递参数意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本;

  4. 按引用传递参数意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值