方法传递参数&按值传递和按引用传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法传递参数&按值传递和按引用传递相关的知识,希望对你有一定的参考价值。

方法传递参数:

   方法就像一个任务要做一件事情,而参数就是一个事情里所需要给予的条件。就像要去买东西这样一件事情,这件事情的参数是需要购买物品的钱,需要传递一个“钱”的参数给这个方法它才能进行执行。例如:

技术分享

  释义:method方法声明了一个int类型的参数,参数名为a。在main方法里调用method方法时就需要给它传递一个参数值,参数值要求符合类型且不超过类型的存储范围。此时给method传递的值是10,所以打印的结果就是10



如果方法声明了参数,在调用此方法时不传递参数值就会报语法错误。例如:

技术分享




按值传递:

  在传递参数值中有按值传递和按引用传递。所有的基本数据类型都是按值传递,按值传递就是把值复制一份过去,不会对原本的变量产生影响,给方法传递的是值。所以即便在方法里改变了传递的值,但它原本的值也不会有改变。因为给它传递的是值而不是原本的内存地址引用。例如:

技术分享

  在main方法里将i的值传递给了参数a,传递的是一个值,所以参数a做出的改变并不会影响到变量ii的输出的结果还是10a的输出的结果则是100




按引用传递:

  除了基本数据类型以外的值都是按引用传递,按引用传递其实就是按地址传递,给参数传递的是同一片内存地址,传递后参数和变量指向的都是同一个内存地址。所以参数做出改变,原本的变量值也会随之而改变。因为它传递的是内存地址,这是按引用传递和按地址传递最大的区别。例如:

技术分享


  数组是八种基本数据类型之外的类型,所以传递参数值时是按引用传递的,也就是按内存地址传递了一个引用。传递后此时数组i和参数a指向的都是使用的同一个内存地址,a的值发生了改变,i的值也会随之发生改变,所以打印的结果都111。就像两个人在同一碗粥一样,他们都是共同使用同一个资源,只要其中一个人对这个资源进行了改变,那么另一个也会受到影响。



  在java中是不可以对内存地址进行改变的,但是在C语言则可以通过内存指针对内存地址进行改变。所以按值传递在C语言里可以将它们的值都指向同一个内存地址,就变成类似于按地址传递的效果了。例如:

技术分享

通过内存指针改变内存地址后i的值和num的值都是指向同一个内存地址。所以i的值发生改变num的值也会随之改变。


本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1974010

以上是关于方法传递参数&按值传递和按引用传递的主要内容,如果未能解决你的问题,请参考以下文章

Java的按值传递和按引用传递解说

(转)Java:按值传递和按引用传递详细解说

按值和按引用传递参数

C#基础按值和按引用传递参数

在 C# 中将 REF 和 OUT 关键字与按引用传递和按值传递一起使用

VB 参数传递:按值传递和按地址传递