Java面试之到底值传递和引用传递???
值传递和引用传递
举例
/*** 值传递和引用传递*/
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面试之到底值传递和引用传递???相关推荐
- 吊打面试官 | Java到底是值传递还是引用传递
HI ! 我是小小,我们又见面了,今天是本周的第六篇,这篇主要讲解关于Java到底是值传递还是引用传递. 先说答案 答案为值传递 答案解释 先说一下值传递和引用传递的概念和区别 值传递:是指在调用函数 ...
- 死磕面试系列,Java到底是值传递还是引用传递?
Java到底是值传递还是引用传递? 这虽然是一个老生常谈的问题,但是对于没有深入研究过这块,或者Java基础不牢的同学,还是很难回答得让人满意. 可能很多同学能够很轻松的背出JVM.分布式事务.高并发 ...
- 面试官:兄弟,说说Java到底是值传递还是引用传递
二哥,好久没更新面试官系列的文章了啊,真的是把我等着急了,所以特意过来催催.我最近一段时间在找工作,能从二哥的文章中学到一点就多一点信心啊! 说句实在话,离读者 trust you 发给我这段信息已经 ...
- Java中的参数传递,到底是值传递还是引用传递?
文章内容为转载,转载自公众号Hollis关于我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 原文链接:我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 知乎回答链接:Java 到 ...
- Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?
来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...
- java是值传递还是引用传递_Java 到底是值传递还是引用传递?
点赞.收藏还挺多,求一波关注 ------------------------------------------------------------ 没人邀请,自己强行回答一波. 关于这个问题,引发 ...
- 多图证明,Java到底是值传递还是引用传递?
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 开篇先来曝答案,在 Java 语言中,本质只有值传递,而无引用传递,解释和证明详见 ...
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java编程语言只有值传递参数. 当一个对象实 ...
- 当面试官问我————Java是值传递还是引用传递?
面试官:你好,你能说出下面个程序的执行结果吗? public class Test {public static void main(String[] args) {String name = &qu ...
最新文章
- 小插件 打开Android程序动画,android-单击小部件后如何启动活动?
- 【BIO】基于BIO实现简单动态HTTP服务器
- java选填,java选择填空 - osc_ug2wy0bi的个人空间 - OSCHINA - 中文开源技术交流社区
- java青蛙青蛙跳井_速解青蛙跳井问题
- python入门之函数调用第一关_零基础学习 Python 之与函数的初次相见
- 【Python】分享几个好用到爆的Python内置模块
- html5图像映射坐标怎么看,如何将AxesImage中的坐标映射到已保存图像文件中的坐标?...
- Django之form表单组件、cookie与session
- python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法
- 【系统架构设计师】软考高级职称,一次通过,倾尽所有,看完这篇就够了,论软件架构设计的重要性、本篇论文“未通过考试”,供分析参考
- windows下升级nodenpm
- 在vue项目中配置axios
- 洛谷 P2712 摄像头
- 计算机竖式在线,竖式计算器
- 大数据第一季--java基础(day2)-徐培成-专题视频课程
- shapley值法初学入门详细介绍
- excel怎么批量插行_excel如何批量在文字前加上固定文字
- 修改chrome默认背景颜色为浅绿色
- 问题 B: 不同出栈情况(栈和队列)
- Python自动化之Excel去除相同数据