浩鲸科技 一面 什么筋


Java开发 看别人帖子都会大大小小按流程逐个问问,到我这边最先是中途换人,来了个小青年,问的问题也太敷衍了

1 Java方法调用值传递引用传递
2 Java常用集合类
3 HashMap + ConcurrentHashMap
4 Mysql索引
5 Redis分布式锁如何上锁
6 消息队列保证有序消费 

第一个问题,我说方法调用传递需要根据传递的变量是primitive type 原始类型还是类(包括包装类)的实例来区别看待,
如果是原始类型的话相当于传递一份原来变量的副本,声明周期只在调用的方法体内,会随方法结束而结束,由于分配在栈空间,不用gc;
如果是传递实例,由于不同句柄会指向堆上开辟的同一块内存空间,对该实例进行成员属性变动(修改值或者list对象做add元素操作),那么
方法体外的原本实例也会受到影响,可以理解为引用传递。
面试官轻描淡写地问我,确定吗?我建议你回去试试。

我自己试了一下

输出结果


可以看到A类的实例对象a的值经过方法调用后,其内部成员属性的值发生了改变。
但是原始类intNum和包装类IntegerNum的结果并未受到任何影响。

==|||   。。。 



#浩鲸云##面经#
全部评论
你说清楚了java是值传递吗
1 回复 分享
发布于 2022-03-20 19:58
可能他想听到的答案就是网上那种标准答案:Java是值传递。当传的是基本类型时,传的是值的拷贝,对拷贝变量的修改不影响原变量;当传的是引用类型时,传的是引用地址的拷贝,但是拷贝的地址和真实地址指向的都是同一个真实数据,因此可以修改原变量中的值😓
3 回复 分享
发布于 2022-03-18 22:59

相关推荐

头像
02-15 16:23
中南大学 Java
野猪不是猪🐗:签了美团真是不一样! 亲戚们都知道我签了美团,过年都围着我问送一单多少钱,还让弟弟妹妹们引以为戒,笑我爸我妈养了个🐢孩子,说从小就知道我这个人以后肯定没出息,我被骂的都快上天了
点赞 评论 收藏
分享
评论
1
11
分享

创作者周榜

更多
牛客网
牛客企业服务