在java中什么是参数传递机制
3个回答
展开全部
参数传递,就是方法调用过程中,调用者将参数传递给被调用者的过程。
其实Java中的所有参数传递,传递的都是一样的,参数直接引用值的复制体。
1. 只是对于Java基础类型(int、long、float等等),参数的引用里面包含的就是它们的值,因此是值传递,在被调用的方法内改变它们的值,不会影响调用者。
2. 对于其他对象,引用里面包含的实际是参数对象的地址,也叫引用传递,在被调用的方法内改变它们的值,当然会影响调用者。
3. 对于像String这样的不变类,参数传递的过程中,与第2点类似,是引用传递;但是当被调方法修改不变类的值的时候,其实是新建了一个另外的对象,那么当然也不会影响被调用者。
这里面的区别就在于,对于基础类型,Java的存储方式是 引用-》值,对于其他对象,Java的存储方式是 引用-》地址-》值(其中的值可能是基础类型或其他对象)。
其实Java中的所有参数传递,传递的都是一样的,参数直接引用值的复制体。
1. 只是对于Java基础类型(int、long、float等等),参数的引用里面包含的就是它们的值,因此是值传递,在被调用的方法内改变它们的值,不会影响调用者。
2. 对于其他对象,引用里面包含的实际是参数对象的地址,也叫引用传递,在被调用的方法内改变它们的值,当然会影响调用者。
3. 对于像String这样的不变类,参数传递的过程中,与第2点类似,是引用传递;但是当被调方法修改不变类的值的时候,其实是新建了一个另外的对象,那么当然也不会影响被调用者。
这里面的区别就在于,对于基础类型,Java的存储方式是 引用-》值,对于其他对象,Java的存储方式是 引用-》地址-》值(其中的值可能是基础类型或其他对象)。
展开全部
Java参数,不管是原始类型还是引用类型,传递的都是副本(java传参是传引用还是传值,网上争论很多)
如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是通过地址改变改变了地址指向的值,那么在函数内的改变会影响到传入的参数。
如果在函数中改变了副本的地址,如当执行如a=其他对象,a=new等赋值操作时,实际上是将a指向新的位置,那么函数外的原值不改变。
如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.
如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是通过地址改变改变了地址指向的值,那么在函数内的改变会影响到传入的参数。
如果在函数中改变了副本的地址,如当执行如a=其他对象,a=new等赋值操作时,实际上是将a指向新的位置,那么函数外的原值不改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
普通变量是值传递,对象是引用传递。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询