当前位置: 首页 > news >正文

Java值传递和引用传递_在java中只有基本类型和按照特定方式初始化的string是按值传递,其他都是按引用传

概念

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

1、按值传递:指的是在方法调用时,传递的参数是按值的拷贝传递

public class Test {public static void main(String args[]){int a = 11;Test.change(a);System.out.println("main方法中a的值是:"+a);}public static int change(int a){a = 22;System.out.println("change方法中a的值是:"+a);return a;}
}

运行结果:

2、按引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址

public class Test {public static void main(String args[]){Demo demo = new Demo();demo.value = 10;Test.change(demo);System.out.println("main方法中demo.value的值是:"+demo.value);}public static void change(Demo demo){demo.value = 20;System.out.println("change方法中demo.value的值是:"+demo.value);}
}class Demo{public int value = 0;
}

运行结果:

 

 

总结:

 

(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Demo”;

 

 

同名原创公众号:程序大视界

 

http://www.jsqmd.com/news/781829/

相关文章:

  • 5分钟快速上手DrQA:开放域问答系统终极入门指南
  • 从零构建高性能静态网站:CSS布局、图像优化与交互设计实战
  • 如何告别百度网盘提取码搜索焦虑?这个开源工具让你3秒直达资源核心
  • 5个神奇功能,让你的英雄联盟游戏体验翻倍提升![特殊字符]
  • * Spring AI 的Tool Calling 工具调用
  • 如何高效管理中文文献:Zotero Jasminum插件的终极解决方案
  • Stratix III FPGA的DPA电路与rx_dpa_locked信号解析
  • 基于MediaPipe与Python的虚拟鼠标:手势识别与坐标映射实战
  • 如何免费解锁原神帧率限制?2025终极指南让游戏画面丝滑如镜
  • Oracle数据库PL/SQL中执行存储过程_oracle手动执行存储过程
  • 09:字符菱形
  • 一致性哈希终极指南:分布式系统设计的核心算法解析
  • 关于interface(接口继承)extends(接口)interface的问题_interface extends
  • Zed编辑器Cursor深色主题移植:设计解析与深度定制指南
  • 从OpenAI技能存档到AI Agent实战:解析与构建结构化AI能力蓝图
  • 水的数据库之道,老子一句话照进 SAP HANA 开发现场
  • 系统质量属性与架构评估
  • LitElement事件处理终极指南:构建高性能交互Web组件的10个最佳实践
  • VMware macOS 终极解锁方案:在普通PC上免费运行苹果系统
  • 告别仓库混乱!用Excel手把手教你做EIQ-ABC分析,快速定位核心客户与爆款商品
  • Universal Pokemon Randomizer完全手册:3步打造你的专属宝可梦世界
  • Windows驱动存储终极管理指南:DriverStore Explorer专业使用手册
  • Yeti实体关系图构建指南:如何可视化威胁活动与攻击者关联
  • Nuxt.js Token管理完全指南:JWT、刷新令牌和安全存储的最佳实践 [特殊字符]
  • LeetCode--已知前序遍历和中序遍历构造二叉树_已知一棵树的前序遍历和中序遍历
  • ComfyUI节点冲突深度解析:5种系统化解决方案与最佳实践
  • OpenCode与Cursor Pro深度整合:无限制提示词与完整工具调用实战
  • Claude Stacks:AI开发环境一键打包与共享的CLI工具实战
  • Rune语言社区贡献指南:如何参与开源项目开发的完整教程
  • 第二篇:Redis的过期删除与内存淘汰——数据过期了怎么删?内存满了怎么办?