final 修饰的变量作为参数,是可以修改的
来源:5-1 不可变对象-1
![](http://img1.sycdn.imooc.com/user/5458620000018a2602200220-100-100.jpg)
李爽爽爽爽
2018-11-06
老师您好,如下两幅图,test3中,参数为a,用final修饰的时候,a不可改动,但是方法的参数中如果没有final的话,就可以改动,请问这个是为什么?
写回答
3回答
-
这个问题是这样的,Integer变量传入一个函数使用int接收时,其实过程中是有变量拷贝过程的,函数里int变量本质上和Integer对象就只是值相同而已,相当于重新声明一个int变量,给的值等于Integer对象的值,因此添加final是否可以修改只与这个函数定义有关,而和外面的Integer对象无关,之后就是final这个关键字的作用了。这个也可以通过这两个变量的作用域来看一下,函数声明里的int变量只在函数内。
142018-11-08 -
Jimin
2018-11-06
我上面回答偏了,我重新回答一下
00 -
Jimin
2018-11-06
你好,final是java关键字,你学习它时应该任何资料都提到过,使用final修饰的引用不允许被修改的,这个是由jvm来保证的,就和synchronized关键字很像,也可以当作java的语法去理解,因此不按照这个规则去使用,编译就会出错。
00
相似问题