首页 新闻 会员 周边 捐助

java方法改变变量问题

0
悬赏园豆:20 [已解决问题] 解决于 2018-12-03 13:50

代码如下

结果如下:

整型或对象无法通过方法改变值,而数组可以通过方法改变。(函数不返回)

周周周文阳的主页 周周周文阳 | 初学一级 | 园豆:10
提问于:2018-12-03 11:56
< >
分享
最佳答案
0

产生此现象的原因是因为传入函数的值是分值(基本)类型引用类型的。
值类型传递进函数的是一个值的拷贝(副本),改变副本的值并不改变其本身。
而引用类型传递进参数的是一个地址,这个地址中存储的就是该参数的值,将此地址的值更改之后,原来的值必然也受影响。
想知道哪些可以被改变,哪些不能被改变,就要分清楚该类型是值类型还是引用类型
对象也是属于引用类型的。下图是一些常见的归类。

一个小tips:一般需要进行new操作的都是引用类型。

收获园豆:20
古宇 | 菜鸟二级 |园豆:476 | 2018-12-03 13:41

感谢回答。但是还有疑问。为什么我用String或Integer测试,仍然是值类型的结果?

周周周文阳 | 园豆:10 (初学一级) | 2018-12-03 13:49

@一对萝卜: string是一种极其特殊的引用类型,其会在某些情况下展示出值类型的特性。这就不是三言两语说得清的了,推荐你看一篇博客,虽然是以C#为例的,但是大多情况下java和c#并无区别。
https://www.cnblogs.com/yank/archive/2011/10/24/2204145.html

古宇 | 园豆:476 (菜鸟二级) | 2018-12-03 14:21
其他回答(1)
0

number 是在主方法中定义,没有传进去,你把int number 改成 number 就可以变了

JSBK | 园豆:179 (初学一级) | 2018-12-03 13:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册