拉丁的传说

是时候展现一下我的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中引用传递问题,在函数中修改引用的指向,会不会影响实参?...相关推荐

  1. C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……

    例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...

  2. 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数

    前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...

  3. 一个java类运行时从哪个方法开始_Java的应用程序是从类中的

    [填空题]还不走,车来了. [填空题]进路是 运行时所经由的路径. [单选题]()是仿照法国巴黎圣母院设计建造的: [简答题]结合你学习的感受,你认为会计核算程序三大会计要素顺序可以颠倒吗? [填空题 ...

  4. java返回不同类型_Java,如果我想从函数中返回不同的类型怎么办?

    public WHATTOWRITEHERE test() { try { transaction.begin(); code which may trigger exception transact ...

  5. java画个半径为1地圆_java - 绘制一个半径为圆的圆并围绕边缘指向 - 堆栈内存溢出...

    圆上的点可以指定为角度θ的函数: x = a + r cos(θ) y = b + r sin(θ) 这里,示出了2π/ 8的增量. 附录:正如@ChristofferHammarström在评论中所 ...

  6. 深入理解call、apply、bind(改变函数中的this指向)

    在JavaScript中call.apply.bind是Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这三个方法进行 ...

  7. java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...

    讲解JNI中的全局引用/局部引用/弱全局引用.缓存jfieldID和jmethodID的两种方式,并编写两种缓存方式的示例代码. 1.从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据 ...

  8. JAVA引用传递导致的方法中重新赋值失败

    在工作中遇到需要对某些参数进行业务逻辑过滤处理,在原方法中过滤成功.将业务过滤代码抽成公共方法后,过滤失败.当时情况如下: 原代码: public static void main(String[] ...

  9. js中修改this的指向方法整理

    JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...

  10. python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...

    在这篇10分钟的文章中,您将学习Python中的函数式范型.您还将学习列表推导式. 目录 函数式范式 Python的map函数是如何运行的 Python中的lambda表达式 Python中的redu ...

最新文章

  1. Python 结巴分词(1)分词
  2. springboot打Jar包和War包
  3. TF之VGG系列:利用预先编制好的脚本data_convert .py文件将图片格式转换为tfrecord 格式
  4. WordPress永久链接 静态化教程
  5. opencv立方体的画法_最详细的立方体透视变化及画法讲解
  6. css规则可以放在云上,CSS中!important规则的使用方法
  7. vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...
  8. ironpython this_IronPython sys._getframe not found
  9. 单链表输出最小值并逐个删除
  10. 京东进一步回应“承兴事件”:歌斐自身存在风控缺陷
  11. php 实现ftp 多文件,php – 使用一个连接读取FTP目录中每个文件的内容
  12. 基于机器视觉的IC表面字符检测
  13. 一些常用的ajax框架
  14. 想和你去吹吹风(张学友演唱歌曲)
  15. BES ANC降噪耳机在量产中发现的噪声
  16. Draco嵌入式AI开发板使用手册V0.1.1
  17. Cesium 地形图
  18. idea git输错密码的处理 win10
  19. chm文件转换成单个html
  20. 「6.1K Star 项目推荐」github主页”快速装修“神器

热门文章

  1. JS数组去重的6种算法实现
  2. JDBC 基础知识总结
  3. Mysql的“Table ‘mysql.servers‘ doesn‘t exist”的解决方法
  4. 用iframe设置代理解决ajax跨域请求问题
  5. 一劳永逸解决PPT中声音视频的路径问题(转)
  6. Linux6.x修改出eth0网卡的解决方法
  7. Access Denied for user root @localhost 解决方案
  8. 分布式任务调度平台XXL-JOB本地配置可能遇到的问题和解决方案
  9. dpkg安装deb缺少依赖包的解决方法
  10. linux下搭建redis并解决无法连接redis的问题