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

关于JAVA中包装类的是什么类型传递这个问题的笔记

背景知识:

如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值。如果在函数中改变了副本的值不会改变原始的值.

如果参数类型是引用类型,那么传过来的就是这个参数的引用,这个引用存放的是参数的对象地址。如果在函数中没有改变这个参数的引用地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。

如果在函数中改变了参数的引用地址,如new一个,那么函数中的局部变量就指向了一个新的对象地址,此时传入的参数还是指向原来的地址,所以不会改变参数的值(如下图)。

 

 

/**
 * 
 * @author ZHOUMI2
* 转自:http://blog.csdn.net/wuya814070935/article/details/49250773
*/ public class Test { public static void test1(Integer num){ num = new Integer(5); } public static void test2(String str){ str.replace("1", "4"); } public static void main(String[] args) { Integer num = new Integer(1); test1(num); // 输出结果为1 System.out.println(num.intValue()); String str = new String("123"); test2(str); // 输出结果为123 System.out.println(str); } }

 

分析: 上述程序很容易让人误以为String类型和包装类型是值传递。

其实: String类型和包装类型都是对象类型,所以必然是引用传递。

      但是由于String类和包装类都被设定成不可变的,没有提供value对应的setter方法,而且很多都是final的,我们无法改变其内容,所以导致我们看起来好像是值传递。

转载于:https://www.cnblogs.com/xujanus/p/7194410.html

相关文章:

  • 【洛谷1607】【USACO09FEB】庙会班车
  • 搭建wordpress-安装xshell
  • python基础2
  • POJ 1830 开关问题(高斯消元求解的情况)
  • Python3的一些基本输入输出
  • 公有属性 公有方法(原型方法) 私有属性 私有方法 特权方法 静态属性 静态方法 对象字面量创建...
  • angularJS指令
  • 头文件assert.h
  • 后台运行命令:amp;和nohup command amp; 以及关闭、查看后台任务
  • 进程间通信之-信号signal--linux内核剖析(九)
  • 入门之快速排序
  • 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  • Vue框架 周期
  • 转 JavaScript 检查(Linting)工具的比较
  • 前端知识学习——html
  • 《Java编程思想》读书笔记-对象导论
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • exif信息对照
  • HTML5新特性总结
  • Javascript基础之Array数组API
  • Vue2.x学习三:事件处理生命周期钩子
  • 跨域
  • 目录与文件属性:编写ls
  • 微信小程序设置上一页数据
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • MyCAT水平分库
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #define用法
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (bean配置类的注解开发)学习Spring的第十三天
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (一)基于IDEA的JAVA基础10
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)LINQ之路
  • (转)大道至简,职场上做人做事做管理
  • (转)项目管理杂谈-我所期望的新人
  • .NET CF命令行调试器MDbg入门(一)
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net 代码性能 - (1)
  • .NET 命令行参数包含应用程序路径吗?
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net程序集学习心得
  • @Resource和@Autowired的区别
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [].slice.call()将类数组转化为真正的数组
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [Deep Learning] 神经网络基础
  • [Django ]Django 的数据库操作