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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴涛 中级黑马   /  2014-3-5 15:35  /  1333 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final可以放在类前面,定义变量时,可以放在变量类型前面,
final放在参数类型前面
int chang(final int d)
{
      d++;
      return d;//d的值改变了
}
这样怎么理解?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

5 个回复

倒序浏览
哥们 你编译 运行过吗
无法理解!

final 的变量 只可被赋值一次!!
回复 使用道具 举报
能不能把你这个程序的全部代码发上来?我觉得若是final放在变量前面的话,他的值在他的作用域内是不会改变的。
回复 使用道具 举报
请把完整程序发上来。、
出现这种情况可能是类中定义了一个成员变量d。
回复 使用道具 举报
本帖最后由 天凌蓝 于 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 个错误


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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

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