java中可以改变引用的指向吗_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...
拉丁的传说
是时候展现一下我的JAVA基础知识了,2333。我按照执行顺序给你写注释好了。Personp1=newPerson(10);//创建了一个对象//p1.age=10;modify(p1);//modify函数传参,创建了一个在modify函数里面的局部变量p//你应该明白p是一个新的变量,这里类似于执行了p=p1,这两个是指向的同一个对象的//p.age=10;p=newPerson(20);//注意,这里!这里!//这里是p被重新赋值了,p指向了新的对象newPerson(20);//p.age=20;//和p1指向的那个对象一毛线关系都没有啊所以,你的代码是在函数内部,把局部变量给重新赋值了。是没法修改到外面的对象的,因为你已经把唯一能访问到外面那个p1的p给重新赋值了!publicstaticvoidmodify(Personp){p.age=20;//只有这样才能修改对象!}同理,如果你写成这样:publicstaticvoidmodify(Personp){p=null;//对外面的p1没有任何影响}我举个例子,你就比较好理解了。你创建了一个100000000个元素的数组,比如就叫p1,你把数组通过参数传进函数里面,那么:这个参数p(类似于p=p1),p和p1他们是指向同一个对象。不是说modify(int[]p)重新创建了100000000个元素的数组。这个应该很好理解。那么:然后你通过p的内置函数怎么操作p都行,都是操作的那100000000个元素的数组。但是,你不能把p重新赋值啊。重新赋值它就不是之前那个数组啦!比如:你重新p=newint[100000000],就创建了一个新的100000000个元素的数组啊。你执行p=null,也只是销毁了这个引用,不让它指向100000000个元素的数组而已。对外面p1的那个数组不会再有任何影响了。看到答案里好多人对这个有误解额。。。说不是一个对象的。说不能在函数里改变参数指向的对象的。说int是传值的。说什么的都有,2333。补充:关于JAVA的函数传参数,你应该也听说过,所谓"基本数据类型是传递的值,其它都是传递的引用"。个人理解是这样的。你传递个Person的对象进去,你可以用SetAge()什么的修改这个对象。但是基本的数据类型,比如Integer、String等等,他们没有什么内置函数能改变他们自己。所以,你传递进去一个int的参数,就算其实是传递的引用,你也只能对int做重新赋值,一重新赋值,就表现成传递的是"值"(永远影响不到函数外面)。
java中可以改变引用的指向吗_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...相关推荐
- C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……
例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...
- 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数
前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...
- 一个java类运行时从哪个方法开始_Java的应用程序是从类中的
[填空题]还不走,车来了. [填空题]进路是 运行时所经由的路径. [单选题]()是仿照法国巴黎圣母院设计建造的: [简答题]结合你学习的感受,你认为会计核算程序三大会计要素顺序可以颠倒吗? [填空题 ...
- java返回不同类型_Java,如果我想从函数中返回不同的类型怎么办?
public WHATTOWRITEHERE test() { try { transaction.begin(); code which may trigger exception transact ...
- java画个半径为1地圆_java - 绘制一个半径为圆的圆并围绕边缘指向 - 堆栈内存溢出...
圆上的点可以指定为角度θ的函数: x = a + r cos(θ) y = b + r sin(θ) 这里,示出了2π/ 8的增量. 附录:正如@ChristofferHammarström在评论中所 ...
- 深入理解call、apply、bind(改变函数中的this指向)
在JavaScript中call.apply.bind是Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这三个方法进行 ...
- java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...
讲解JNI中的全局引用/局部引用/弱全局引用.缓存jfieldID和jmethodID的两种方式,并编写两种缓存方式的示例代码. 1.从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据 ...
- JAVA引用传递导致的方法中重新赋值失败
在工作中遇到需要对某些参数进行业务逻辑过滤处理,在原方法中过滤成功.将业务过滤代码抽成公共方法后,过滤失败.当时情况如下: 原代码: public static void main(String[] ...
- js中修改this的指向方法整理
JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...
在这篇10分钟的文章中,您将学习Python中的函数式范型.您还将学习列表推导式. 目录 函数式范式 Python的map函数是如何运行的 Python中的lambda表达式 Python中的redu ...
最新文章
- Python 结巴分词(1)分词
- springboot打Jar包和War包
- TF之VGG系列:利用预先编制好的脚本data_convert .py文件将图片格式转换为tfrecord 格式
- WordPress永久链接 静态化教程
- opencv立方体的画法_最详细的立方体透视变化及画法讲解
- css规则可以放在云上,CSS中!important规则的使用方法
- vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...
- ironpython this_IronPython sys._getframe not found
- 单链表输出最小值并逐个删除
- 京东进一步回应“承兴事件”:歌斐自身存在风控缺陷
- php 实现ftp 多文件,php – 使用一个连接读取FTP目录中每个文件的内容
- 基于机器视觉的IC表面字符检测
- 一些常用的ajax框架
- 想和你去吹吹风(张学友演唱歌曲)
- BES ANC降噪耳机在量产中发现的噪声
- Draco嵌入式AI开发板使用手册V0.1.1
- Cesium 地形图
- idea git输错密码的处理 win10
- chm文件转换成单个html
- 「6.1K Star 项目推荐」github主页”快速装修“神器
热门文章
- JS数组去重的6种算法实现
- JDBC 基础知识总结
- Mysql的“Table ‘mysql.servers‘ doesn‘t exist”的解决方法
- 用iframe设置代理解决ajax跨域请求问题
- 一劳永逸解决PPT中声音视频的路径问题(转)
- Linux6.x修改出eth0网卡的解决方法
- Access Denied for user root @localhost 解决方案
- 分布式任务调度平台XXL-JOB本地配置可能遇到的问题和解决方案
- dpkg安装deb缺少依赖包的解决方法
- linux下搭建redis并解决无法连接redis的问题