值传递和引用传递

举例

/*** 值传递和引用传递*/
class Person {private Integer id;private String personName;public Person(String personName) {this.personName = personName;}
}
public class TransferValueDemo {public void changeValue1(int age) {age = 30;}public void changeValue2(Person person) {person.setPersonName("XXXX");}public void changeValue3(String str) {str = "XXX";}public static void main(String[] args) {TransferValueDemo test = new TransferValueDemo();// 定义基本数据类型int age = 20;test.changeValue1(age);System.out.println("age ----" + age);// 实例化person类Person person = new Person("abc");test.changeValue2(person);System.out.println("personName-----" + person.getPersonName());// StringString str = "abc";test.changeValue3(str);System.out.println("string-----" + str);}
}

最后输出结果

age ----20
personName-----XXXX
string-----abc

changeValue1的执行过程

八种基本数据类型,在栈里面分配内存,属于值传递

栈管运行,堆管存储

当们执行 changeValue1的时候,因为int是基本数据类型,所以传递的是int = 20这个值,相当于传递的是一个副本,main方法里面的age并没有改变,因此输出的结果 age还是20,属于值传递

changeValue2的执行过程

因为Person是属于对象,传递的是内存地址,当执行changeValue2的时候,会改变内存中的Person的值,属于引用传递,两个指针都是指向同一个地址

changeValue3的执行过程

String不属于基本数据类型,但是为什么执行完成后,还是abc呢?

这是因为String的特殊性,当我们执行String str = "abc"的时候,它会把 abc 放入常量池中

当我们执行changeValue3的时候,会重新新建一个xxx,并没有销毁abc,然后指向xxx,然后最后我们输出的是main中的引用,还是指向的abc,因此最后输出结果还是abc

Java面试之到底值传递和引用传递???相关推荐

  1. 吊打面试官 | Java到底是值传递还是引用传递

    HI ! 我是小小,我们又见面了,今天是本周的第六篇,这篇主要讲解关于Java到底是值传递还是引用传递. 先说答案 答案为值传递 答案解释 先说一下值传递和引用传递的概念和区别 值传递:是指在调用函数 ...

  2. 死磕面试系列,Java到底是值传递还是引用传递?

    Java到底是值传递还是引用传递? 这虽然是一个老生常谈的问题,但是对于没有深入研究过这块,或者Java基础不牢的同学,还是很难回答得让人满意. 可能很多同学能够很轻松的背出JVM.分布式事务.高并发 ...

  3. 面试官:兄弟,说说Java到底是值传递还是引用传递

    二哥,好久没更新面试官系列的文章了啊,真的是把我等着急了,所以特意过来催催.我最近一段时间在找工作,能从二哥的文章中学到一点就多一点信心啊! 说句实在话,离读者 trust you 发给我这段信息已经 ...

  4. Java中的参数传递,到底是值传递还是引用传递?

    文章内容为转载,转载自公众号Hollis关于我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 原文链接:我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 知乎回答链接:Java 到 ...

  5. Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?

    来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...

  6. java是值传递还是引用传递_Java 到底是值传递还是引用传递?

    点赞.收藏还挺多,求一波关注 ------------------------------------------------------------ 没人邀请,自己强行回答一波. 关于这个问题,引发 ...

  7. 多图证明,Java到底是值传递还是引用传递?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 开篇先来曝答案,在 Java 语言中,本质只有值传递,而无引用传递,解释和证明详见 ...

  8. java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

    java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java编程语言只有值传递参数. 当一个对象实 ...

  9. 当面试官问我————Java是值传递还是引用传递?

    面试官:你好,你能说出下面个程序的执行结果吗? public class Test {public static void main(String[] args) {String name = &qu ...

最新文章

  1. 小插件 打开Android程序动画,android-单击小部件后如何启动活动?
  2. 【BIO】基于BIO实现简单动态HTTP服务器
  3. java选填,java选择填空 - osc_ug2wy0bi的个人空间 - OSCHINA - 中文开源技术交流社区
  4. java青蛙青蛙跳井_速解青蛙跳井问题
  5. python入门之函数调用第一关_零基础学习 Python 之与函数的初次相见
  6. 【Python】分享几个好用到爆的Python内置模块
  7. html5图像映射坐标怎么看,如何将AxesImage中的坐标映射到已保存图像文件中的坐标?...
  8. Django之form表单组件、cookie与session
  9. python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法
  10. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,看完这篇就够了,论软件架构设计的重要性、本篇论文“未通过考试”,供分析参考
  11. windows下升级nodenpm
  12. 在vue项目中配置axios
  13. 洛谷 P2712 摄像头
  14. 计算机竖式在线,竖式计算器
  15. 大数据第一季--java基础(day2)-徐培成-专题视频课程
  16. shapley值法初学入门详细介绍
  17. excel怎么批量插行_excel如何批量在文字前加上固定文字
  18. 修改chrome默认背景颜色为浅绿色
  19. 问题 B: 不同出栈情况(栈和队列)
  20. Python自动化之Excel去除相同数据

热门文章

  1. easymodbus_easymodbus4j基于netty的modbus协议快速开发工具
  2. python生成安装程序_python生成安装文件 msi
  3. 鸿蒙宴原文及翻译,《鸿门宴》文言文原文及全文详细翻译
  4. php自动裁剪黑边,视频画面裁剪怎么将视频四周的黑边去除?
  5. webService(简单小demo)
  6. lintcode-137-克隆图
  7. 54-locate 简明笔记
  8. :Android网络编程--XML之解析方式:SAX
  9. 【BZOJ】【3669】【NOI2014】魔法森林
  10. 30 个用于杂志网站的 WordPress 主题