采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,如下两幅图,test3中,参数为a,用final修饰的时候,a不可改动,但是方法的参数中如果没有final的话,就可以改动,请问这个是为什么?
这个问题是这样的,Integer变量传入一个函数使用int接收时,其实过程中是有变量拷贝过程的,函数里int变量本质上和Integer对象就只是值相同而已,相当于重新声明一个int变量,给的值等于Integer对象的值,因此添加final是否可以修改只与这个函数定义有关,而和外面的Integer对象无关,之后就是final这个关键字的作用了。这个也可以通过这两个变量的作用域来看一下,函数声明里的int变量只在函数内。
非常感谢!
谢谢老师,这里弄明白了~ 我后面又改了一下,如第二幅图,把test3改成test3(Integer a),依旧是可以修改的,请问这个是为什么?
看作用域啊,你修改的a是参数a,而不再是Integer a,你上面Integer a改成其他名称也不影响这个函数
我上面回答偏了,我重新回答一下
你好,final是java关键字,你学习它时应该任何资料都提到过,使用final修饰的引用不允许被修改的,这个是由jvm来保证的,就和synchronized关键字很像,也可以当作java的语法去理解,因此不按照这个规则去使用,编译就会出错。
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.8k 1
1.2k 18
1.2k 15
3.7k 12
1.3k 12
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号