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

简介:

方法传递参数:

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

wKioL1nnes-TnxIjAAl6SLt7rbE230.png

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



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

wKiom1nnfYiz1cH6AAf0FDZScf4977.png




按值传递:

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

wKioL1nnetrTfPNVAA1BRsNesGY105.png

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




按引用传递:

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

wKiom1nnfZmjLm_nAA9RdbpJVQo215.png


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



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

wKioL1nneuyRtwJ0AA8SYTZNInY076.png

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




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974010,如需转载请自行联系原作者

相关文章
|
8天前
|
人工智能 运维 安全
|
6天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
663 23
|
7天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
14天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1072 110
人工智能 数据可视化 数据挖掘
241 0