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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呆呆呆 中级黑马   /  2013-12-18 16:34  /  1062 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 呆呆呆 于 2013-12-18 17:57 编辑
  1. class Something
  2. {
  3. int i;
  4. public void doSomething()
  5. {
  6. System.out.println("i = "+ i);
  7. }
  8. }
  9. <DIV class=blockcode>
  10. <BLOCKQUOTE>class Something
  11. {
  12. final int i;
  13. public void doSomething()
  14. {
  15. System.out.println("i = "+ i);
  16. }
  17. }
复制代码

这两段代码只有一个地方不同,就是多了一个final,为什么后面一个会错而前面的正确。


  1. <P> </P>
复制代码

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

4 个回复

倒序浏览
不知道,貌似没错
回复 使用道具 举报
final 修饰的是常量,是要直接赋值的吧
回复 使用道具 举报
首先你需要知道的是final 修饰的变量代表什么意思,final 修饰的变量代表的是常量类型,被赋值一次后就不能在修改了。 是固定不变的。还需要知道,在调用这个final 常量之前你必须要给这个常量赋值,否则会报错,null。 因为这个变量是一个固定不变的值,你在这里没有给这个变量赋值,所以会报错。

评分

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

查看全部评分

回复 使用道具 举报
final翻译过来是: 最终的;不可更改的。一目了然吧,被final修饰的变量是不可更改的,就是常量了,定义的是一个int类型的常量,成员变量会被自动赋初始值,常量必须自己赋值,否则报错。
再则,常量值是固定的的i ++ 相当于从新给i赋值,所以也出错。

评分

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

查看全部评分

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