当前位置: 首页 > 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指向创建的堆空间,方法执行后返回,这个堆空间并没有被引用会被当作垃圾进行回收

请添加图片描述

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

相关文章:

  • 仙宫云ComfyUI —【Wan2.1】AI视频生成部署
  • uniapp利用生命周期函数实现后台常驻示例
  • 代码随想录算法训练营第二十九天
  • 《淘宝 API 数据湖构建:实时商品详情入湖 + Apache Kafka 流式处理指南》
  • 为什么使用ThreadLocal后要调用remove()方法呢?
  • Springboot整合阿里云腾讯云发送短信验证码 可随时切换短信运营商
  • 数智双翼,生态共赢:中钧科技“双帮”如何领航企业全域升级?
  • 【java】接口
  • OpenResty深度解析:从卓伊凡的”隐形主流”论看其深度原理与应用生态-卓伊凡
  • Label Studio 软件介绍及安装使用说明
  • QGIS+mcp的安装和使用
  • 【零基础入门】ASP.NET Core快速搭建第一个Web应用
  • Shiro学习(七):总结Shiro 与Redis 整合过程中的2个问题及解决方案
  • Kotlin DSL 深度解析:从 Groovy 迁移的困惑与突破
  • 加密算法:ed25519和RSA
  • 如何搭建spark yarn 模式的集群集群。
  • 快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改变浏览器地址等问题
  • Matlab自学笔记五十二:变量名称:检查变量名称是否存在或是否与关键字冲突
  • 如何创建并使用极狐GitLab 受保护分支?
  • 第二十节:编码实操题-实现图片懒加载指令
  • 美乌总统梵蒂冈会谈,外交部:望有关各方继续通过对话谈判解决危机
  • 【社论】用生态环境法典守护生态文明
  • 公交公司须关注新出行需求:“单车巴士”能否常态化
  • 中方在IMF发声:美滥施关税威胁全球金融稳定,对新兴市场和发展中国家构成严峻挑战
  • 政治局会议深度|提出“设立新型政策性金融工具”有何深意?
  • 解码人格拼图:探索心理健康的多维视角