博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础【二】 - 值传递和引用传递
阅读量:5913 次
发布时间:2019-06-19

本文共 707 字,大约阅读时间需要 2 分钟。

什么是值传递

在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。

什么是引用传递

引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将实参的地址复制一份传递到函数中。形参和实参的地址相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以如果在函数中对该值(形参的值)进行了操作将会影响实参的值。(注意:这里所说的是改变源数据的内容,如:改变的对象的属性)

实例

public static void main(String[] args) {    int str = 1;        char[] ch = {'a', 'b'};    change(str, ch);    System.out.println(str);    //输出:1    System.out.println(ch);    //输出:cd}        public static void change(int str, char[] ch) {            str = 2;    ch[0] = 'c';    //改变数据源内容}

值传递和引用传递过程分析图

  1. 为对象分配内存空间

图片描述

  1. 执行 change() 方法。执行前实参(黑色)和形参(红色)指引。

图片描述

  1. 执行后

图片描述

怎么改变值传递的实参

可以利用反射改变实参的值,后面会写反射相关的文章。

如果内容对你有帮助希望点赞收藏谢谢!!!

转载地址:http://gqvpx.baihongyu.com/

你可能感兴趣的文章
Confluence 容器化使用拾遗
查看>>
MVVM框架的搭建(三)——网络请求
查看>>
天价烤虾刷屏朋友圈下:挑起大梁的抖音还能千亿营收不是梦?
查看>>
一步一步实现一个Promise A+规范的 Promise之二:链式调用
查看>>
iOS状态栏的显示与隐藏
查看>>
最新版本的Chrome新增访客管理功能 提供管理员更多控制项目
查看>>
Ubuntu18.04LTS下cuda10.0+cudnn7.5+TensorFlow1.13环境搭建
查看>>
解决Hive使用desc显示中文注释乱码
查看>>
spring源码之IOC容器资源定位过程
查看>>
这个时代程序员天生就有创造被动收入的优势,只是我们一直在出卖时间为他人打工。...
查看>>
【白皮书】JS中的基本概念
查看>>
搭建一对一直播系统需要注意的问题
查看>>
2019年主要的企业云趋势
查看>>
前端同构渲染的思考与实践
查看>>
使用Dockerfile构建镜像
查看>>
Java 删除List<T>中空值
查看>>
简单的仿淘宝京东详情页效果
查看>>
用Kotlin封装极简适配器,从此远离ViewHolder
查看>>
【一起学习排序算法】4 插入排序
查看>>
Git 中常用操作步骤
查看>>