黑马程序员技术交流社区

标题: 代码查错 [打印本页]

作者: 呆呆呆    时间: 2013-12-18 16:34
标题: 代码查错
本帖最后由 呆呆呆 于 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>
复制代码


作者: 風諾    时间: 2013-12-18 16:47
不知道,貌似没错
作者: §傻、才乖    时间: 2013-12-18 17:43
final 修饰的是常量,是要直接赋值的吧
作者: 恩恩    时间: 2013-12-18 17:52
首先你需要知道的是final 修饰的变量代表什么意思,final 修饰的变量代表的是常量类型,被赋值一次后就不能在修改了。 是固定不变的。还需要知道,在调用这个final 常量之前你必须要给这个常量赋值,否则会报错,null。 因为这个变量是一个固定不变的值,你在这里没有给这个变量赋值,所以会报错。
作者: 夏德宇    时间: 2013-12-18 20:17
final翻译过来是: 最终的;不可更改的。一目了然吧,被final修饰的变量是不可更改的,就是常量了,定义的是一个int类型的常量,成员变量会被自动赋初始值,常量必须自己赋值,否则报错。
再则,常量值是固定的的i ++ 相当于从新给i赋值,所以也出错。





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