浅谈Java中方法参数传递的问题
发布时间 - 2026-01-11 02:56:12 点击率:次可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递。在这里,定义方法时,参数列表中的变量,我们称为形式参数。

调用方法时,传入给方法的数值,我们称为实际参数
在Java中调用方法时,如果参数是基本类型(byte/short/int/long/float/double/char/boolean)以及String类型时,形式参数的改变不影响实际参数。
以下代码在内存中发生的动作:
最开始时,方法区中存入main()方法文件,然后在栈中main()方法入栈(压栈),局部变量入栈初始化,执行到change()方法,方法区中有change()文件,接着change()入栈,实参a/b将自己的值赋值给形参a/b,执行方法中的代码,形参a变为20,形参b变为40,执行完后,change()方法立刻出栈(弹栈),形参a/b也从内存中消除。期间并没有影响到实参的值。
如果是引用数据类型(不包括String),比如数组int[ ],形参的改变会影响到实参。
最开始时,方法区中存入main()方法文件,然后在栈中main()方法入栈(压栈),创建用静态方法创建数组,相当于new了一个int[],凡是new出来的都要进入堆中,在堆中划出一块内存空间,分成5份用来存储5个元素,先初始化元素的值全为0,然后将每个变量赋值1,2,3,4,5,然后将开辟的这块内存地址0x1234赋给arr。执行到change()方法,方法区中有change()文件,接着change()入栈,实参arr将地址值赋值给形参arr,实参和形参都指向堆中开辟的内存,然后在change()中,将数组中的偶数元素变为2倍,改变的就是堆内存中的数据。然后change()方法执行完后出栈,主方法中打印数组,实参arr仍指向对内存中的已经改变的数组,并输出。形参的改变影响到实参的数值。
对于String类型比较特殊,它本身是引用数据类型,但是在这里按基本数据处理。因为字符串的本质是字符数组,在方法区中有专门一块地方叫字符串常量池用来存储字符串常量.这里记住:凡是用双引号引起来的都是字符串常量,存储在字符串常量池当中.如图中的”hello”字符串存储在字符串常量池中,地址值为0x666,然后Stirng str1 = new String(“hello”),在堆中开辟一块内存,将”hello”的地址值0x666存储在内存中,同时将该内存的地址值0x999赋给str1.然后String str2 = “hello”,将”hello”的地址值0x666直接赋给str2.
String有一个特点,每改变一次就会在字符串常量池中生成一个新的常量,比如String s = ”hello”在字符串常量池中的地址是0x666,然后s = “hello”+1,此时的字符串常量池会开辟一块新的空间给”hello1”,地址值为0x333,再将地址值赋值给s.所以,String s = “hello”,将s作为实参传递给方法时,无论形参中的s怎么改变都不会影响到0x666的”hello”,也不会影响到实参s.所以String虽然作为引用数据类型,但它形参的变化不会影响到实参.
以上这篇浅谈Java中方法参数传递的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java方法参数传递
# Java 方法的重载与参数传递详解
# Java方法参数传递如何实现
# Java方法参数传递机制原理解析
# Java方法的参数传递机制实例详解
# 深入解析Java编程中方法的参数传递
# Java中方法作为参数传递的方式
# 影响到
# 区中
# 堆中
# 在这里
# 池中
# 给大家
# 完后
# 值为
# 自己的
# 都是
# 都要
# 会在
# 希望能
# 数据处理
# 可以使用
# 当我们
# 这块
# 会把
# 这篇
# 但它
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
网站制作免费,什么网站能看正片电影?
如何在Windows环境下新建FTP站点并设置权限?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何用PHP快速搭建高效网站?分步指南
如何用wdcp快速搭建高效网站?
使用C语言编写圣诞表白程序
如何在Windows 2008云服务器安全搭建网站?
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何使用Eloquent进行子查询
html如何与html链接_实现多个HTML页面互相链接【互相】
浅析上传头像示例及其注意事项
Laravel如何配置Horizon来管理队列?(安装和使用)
如何挑选最适合建站的高性能VPS主机?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何快速搭建高效简练网站?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
制作企业网站建设方案,怎样建设一个公司网站?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何快速登录WAP自助建站平台?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何在香港服务器上快速搭建免备案网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
BootStrap整体框架之基础布局组件
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Laravel如何实现模型的全局作用域?(Global Scope示例)
php json中文编码为null的解决办法
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
javascript基于原型链的继承及call和apply函数用法分析
Laravel如何实现API速率限制?(Rate Limiting教程)
浅谈Javascript中的Label语句
googleplay官方入口在哪里_Google Play官方商店快速入口指南
java ZXing生成二维码及条码实例分享
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
JavaScript如何操作视频_媒体API怎么控制播放
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
潮流网站制作头像软件下载,适合母子的网名有哪些?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何快速生成可下载的建站源码工具?
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】

