A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kkopopo 中级黑马   /  2014-2-28 19:42  /  834 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kkopopo 于 2014-2-28 22:07 编辑
  1. public class Test2 {
  2.         public static void main(String[] args) {

  3.                 final int age = 1;
  4.                 myMetod(age,new Student());//这个地方为何不报错? 我在函数中明明定义的必须为final
  5.         }
  6.         public static void myMetod(final int x,final Student stu){
  7.                 //
  8.         }

  9. }
  10. class Student{
  11.         
  12. }
复制代码
代码部分  我明明要求穿进去的参数必须是final的,为何new Student就可以!

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
你参数上的final仅仅是对于函数内部有效的,函数执行结束后这个函数在栈内存是被释放的,所以参数上的final Student stu是可以再次赋值的。
回复 使用道具 举报
你可以查询下 final的用法。
对于final修饰形参来说,表示 你传入的实参的内容或者值是不能在函数内部改变的。。而跟你传入的实参的方式没有关系。
回复 使用道具 举报
乔青山 发表于 2014-2-28 19:51
你参数上的final仅仅是对于函数内部有效的,函数执行结束后这个函数在栈内存是被释放的,所以参数上的final ...

万分感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马