黑马程序员技术交流社区

标题: 关于final关键字的小疑问 [打印本页]

作者: 李节起    时间: 2012-4-5 23:34
标题: 关于final关键字的小疑问
在定义方法的参数时,使用如下形式


public void method(final  StringBuffer  param)
{

}

想阻止方法内部修改传进来的参数对象,
为什么不可以?


final修饰一个变量时,到底是引用不能变,还是引用的对象不能变?
作者: 刘晓康    时间: 2012-4-5 23:43
final关键字的不变,是指该变量的地址直不变,简单来将当fianl修饰的是基本数据类型时,值一旦给定了就不能在改了。当fianl修饰引用变量(类)时,一旦指向了某个对象就不能再指向别的对象了。简单来说一旦该变量执行了赋值动作就不可以在执行赋值的动作了。即 final x=kk;  后不能在后x=..... 的情况出现了。需要注意的是如果你的成员变量定义成fianl类型是就必须在构造函数中给它赋值,不能通过方法来赋值。
作者: 江远云    时间: 2012-4-6 00:05
想阻止方法内部修改传进来的参数对象,
为什么不可以?
被final修饰的变量是常量

final修饰一个变量时,到底是引用不能变,还是引用的对象不能变?
两者有一者变的话不都一样,应该是引用与引用的对象都不能变
作者: 曾晓文    时间: 2012-4-6 00:26
虽然final修饰的变量是不能修改的,但是final修饰的变量是引用变量的(即对象的地址),而不能作用于引用的对象。所以,不能阻止方法内部修改传进来的参数对象
final修饰一个变量时,是引用不能变。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2