关于面试题【为什么说Java 中只有值传递】的一些吐槽

目录

前言

一、网上多数答案的套路

二、看千篇一律的套路所产生的后果

三、笔者对此问题的理解

1、【Java 中为什么只有值传递】这个问题是如何产生的?

2、如何回答这个问题?


前言

笔者在准备这个问题的时候,不但没有弄清楚这个问题的“答案”,反而还让自己的理解变得更乱。

折腾了一点时间,才对这个面试题有了一些自己的理解,发出来吐个槽,若理解有误,欢迎指正。

一、网上多数答案的套路

1、直接扔概念,告诉你什么是值传递,什么是引用传递

2、然后以【基本数据类型】为参数来举例子,证明Java 中的值传递

3、再以【引用数据类型】为参数来举例子,引出Java存在引用传递的错误理解。

4、接着以【String】为参数来举例子,证明引用数据类型也是值传递

5、从各种角度分析错误原因

6、得出结论:Java 只存在值传递

7、然后就没有然后了

(;′⌒`)  那到底 为什么Java 中只有值传递啊

二、看千篇一律的套路所产生的后果

我原本不知道【值传递】和【引用传递】这两个词

但是知道基本数据类型是复制一份值给参数,对于引用数据类型来说传递的值是引用。

然而。。。。。。。

第一次看完答案后,困惑:【Java 到底是值传递还是引用传递?】

再看第二遍,大悟:【Java 是值传递!】

梅开二度,困惑:【等等,我好像本来的理解就是这样的呀?】

梅开三度,困惑:【所以说,为什么Java 中只有值传递?】

 

简单来说,网上大多数的答案,不但没有解释 【为什么Java 中只有值传递】的问题。

反而在科普的过程中,有误导的嫌疑

即你的理解原本是对的,只是不够透彻,被几个例子误导后,再被纠正,最后还没给出原问题的答案。。

最终结果就是,在知识学习和遗忘的迭代过程中,我们有可能没有通过【问题驱动】达到【巩固知识,加深理解】的目的,

存留下载的反而是更深的困惑(Java 是值传递还是引用传递来着?)

 

三、笔者对此问题的理解

先说结论,Java 中只有值传递。

1、【Java 中为什么只有值传递】这个问题是如何产生的?

笔者草草看了几篇博客,从零星的信息中猜测:

有的资料给的是错误结论,有的是自己理解错误,所以有相当一部分人认为

Java对于基本数据类型来说是值传递,对于引用数据类型来说是引用传递

所以这个问题想问的是有部分人认为Java中存在引用传递和值传递,但是Java中只有值传递,这是为什么?

这个问题省略了背景,因此让一开始就接触正确概念的人很困惑(让人感觉答非所问)

说实话笔者最开始以为这个问题想问的是,Java运用值传递的【好处】【优点】之类的底层机制问题。。。。。

2、如何回答这个问题?

试试把问题换成【如何理解Java 中的值传递】

笔者能力也不足,言多必失,怕误导各位,这里只抛砖引玉。

概念

值传递是指调用函数时将实际参数复制一份传递到函数中,这样在函数中对参数本身进行修改,将不会影响到实际参数。

(网上copyd的,“本身”二字是根据笔者自己的理解加上的)

1、对于基本数据类型来说,不赘述。

2、对于引用数据类型来说,形参本身是地址,修改形参的地址,实参是不会受到影响的。

但是如果通过形参去修改对象的属性,实参是会受影响的,这也是为什么笔者强调了参数本身。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值