黑马程序员技术交流社区

标题: final [打印本页]

作者: 吴涛    时间: 2014-3-5 15:35
标题: final
final可以放在类前面,定义变量时,可以放在变量类型前面,
final放在参数类型前面
int chang(final int d)
{
      d++;
      return d;//d的值改变了
}
这样怎么理解?
作者: osully    时间: 2014-3-5 15:49
哥们 你编译 运行过吗
无法理解!

final 的变量 只可被赋值一次!!

作者: love~陌    时间: 2014-3-5 16:04
能不能把你这个程序的全部代码发上来?我觉得若是final放在变量前面的话,他的值在他的作用域内是不会改变的。
作者: twtzhongxin    时间: 2014-3-5 17:09
请把完整程序发上来。、
出现这种情况可能是类中定义了一个成员变量d。
作者: 天凌蓝    时间: 2014-3-5 17:45
本帖最后由 天凌蓝 于 2014-3-5 17:46 编辑

编译失败,因为用被final修饰的变量是常量,他的值是不可以改变的。
  1. class A
  2. {       
  3.         int d=1;
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println(""+chang(2));
  7.         }
  8.         int chang(final int d)
  9. {
  10.       d++;
  11.       return d;//d的值改变了
  12. }
  13. }
复制代码

两种情况,编译结果:
A.java:10: 错误: 非法字符: \65307
      d++;
         ^
1 个错误



作者: 絮缘小默    时间: 2014-3-5 17:49
本帖最后由 絮缘小默 于 2014-3-5 17:59 编辑
  1. <blockquote>public class Test1{
复制代码
JAVA 中用 final 来修饰方法参数的原因是防止方法参数在调用时被篡就是在调用方法参数的值是不能被修改的。






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