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

【Java学习笔记】传参机制

传参机制(极其重要!!!

一、基本数据类型传参机制

结论:基本数据类型,传递的是(值拷贝),形参的任何改变不影响实参

代码实例

public class practise {public static void main(String[] args){int a = 10;int b = 20;exchange method = new exchange();method.exchangemethod(a,b);System.out.println("main方法中的值:" + "a=" + a + "  " + "b=" + b);}
}class exchange{public void exchangemethod(int a,int b){int temp = a;a = b;b = temp;System.out.println("类方法中交换后的值:" + "a=" + a + "  " + "b=" + b);}
}//输出结果
类方法中交换后的值:a=20  b=10
main方法中的值:a=10  b=20

分析

二、引用数据类型传参机制

结论:引用数据类型传的是地址,形参影响实参

案例一

public class practise {public static void main(String[] args){person p = new person();p.age = 10;p.name = "jackson";b methodb =new b();methodb.test(p);System.out.println("main方法中的年龄为:" + p.age);}
}class person{int age;String name;
}class b{public void test(person p){p.age = 1000;}
}//输出结果
main方法中的年龄为:1000

代码分析

案例二(把案例一中的 b 方法修改为p == null

public class practise {public static void main(String[] args){person p = new person();p.age = 10;p.name = "jackson";b methodb =new b();methodb.test(p);System.out.println("main方法中的年龄为:" + p.age);}
}class person{int age;String name;
}class b{public void test(person p){p = null}
}//输出结果
main方法中的年龄为:10

分析:p = null这句话是对方法的栈空间有影响,对主栈并不会有影响(核心关键点

请添加图片描述

案例三

public class practise {public static void main(String[] args){person p = new person();p.age = 10;p.name = "jackson";b methodb =new b();methodb.test(p);System.out.println("main方法中的年龄为:" + p.age);}
}class person{int age;String name;
}class b{public void test(person p){p = new person();p.age = 99;}
}//输出结果
main方法中的年龄为:10

分析:虽然p传进来了,但是方法中p又指向了一个新的堆空间,并不指向主栈中的p指向的堆空间,这个时候对主栈中的p并不会有影响

注意:方法中p指向创建的堆空间,方法执行后返回,这个堆空间并没有被引用会被当作垃圾进行回收

请添加图片描述

总结引用数据类型传递传的是地址,是否对主栈产生影响要看方法是否指向主栈中的堆空间并对主栈中堆空间的属性做出了修改

http://www.xdnf.cn/news/202231.html

相关文章:

  • Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格
  • 【Java】 使用 HTTP 响应状态码定义web系统返回码
  • 继承(c++版 非常详细版)
  • linux 环境下 c++ 程序打印 core dump 信息
  • 滑动窗口模板
  • 【基础知识】常见的计算公式(一)
  • java借助NIO、链表、跳表模拟实现redis
  • CDGP|如何建立高效的数据治理团队?
  • 【强化学习系列】贝尔曼方程
  • mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
  • Marin说PCB之----板材的替换注意事项
  • vite创建vue3项目并进行配置
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析
  • openGauss DB4AI与scikit-learn模块对比探究
  • 基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献
  • HTML标记语言_@拉钩教育【笔记】
  • 座舱系统香氛模块概念
  • 【Linux】第十一章 管理网络
  • COMEM光纤温度传感器Optocon:可靠稳定的温度监测方案
  • 2025三掌柜赠书活动第十五期:高并发系统:设计原理与实践
  • 跨语言哈希一致性:C# 与 Java 的 MD5 之战?
  • PHP经验笔记
  • 大模型相关问题解答
  • 记一次奇妙的Oracle注入绕WAF之旅
  • vue-router: vue3路由管理器
  • 新时代下的存储过程开发实践与优化
  • AI大模型入门指南——概念篇
  • 语音合成之九注意力机制在TTS中的应用:让模型“听懂”文本
  • 从零开始学AI教程 初学者入门指南