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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就是在定义方法的参数时,加上final 关键字,是不是就可以阻止方法内部修改传递进来的参数呢?

public void demo(final 数据类型 形参)
{
}
如果不可以请给详细解释哈,为什么呢这是?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

4 个回复

正序浏览
完全可以的 很多框架再设计时,都是这样做,效率会更高些。
回复 使用道具 举报
final:最终,final修饰的变量时一个不可改变的变量。
final可以修饰成员变量,方法,类,局部变量:方法内部定义的变量。
fianl型变量只能赋值一次,如果不使用可以不赋值,如果使用必须要求有值。
回复 使用道具 举报
没什么不可以的。final关键字修饰的变量,如果为值型,则其值除了初始化之外,不可以被再次赋值;如果为引用型,则表示该引用不能指向其他的对象,但是该引用指向的对象本身是可以改变其值的。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
当然可以用final修饰形参了,一个例子:匿名内部类;
匿名内部类可以访问外部类的所有成员,也可以访问包裹此匿名内部类的方法的局部变量,但是必须是final类型的局部变量,形参就是局部变量;
因为局部变量随着方法的调用而分配存储空间,方法调用完毕空间收回,而匿名内部类对象还存在,这样就会出现匿名内部类对象调用不存在的变量,所以必须用final修饰;

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

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