黑马程序员技术交流社区

标题: 求指导 [打印本页]

作者: yang1352546    时间: 2014-5-28 16:24
标题: 求指导
本帖最后由 yang1352546 于 2014-5-29 20:29 编辑

被final修饰的成员变量,只能在构造方法中赋值,不可以在普通方法中赋值?为什么

作者: 海世山盟    时间: 2014-5-28 16:36
final修饰的变量叫最终变量。也就是一加载就初始化了。后边就不能动了。就好像一个人 一去上户口他的身份证号码就固定了。当你后边去想弄个假身份证号码 那你就违法了。
不仅如此,final还有一些其他的特型,比如final修饰的类不能被继承,final修饰的方法不能被覆盖,道理都是一样的。
作者: code2014    时间: 2014-5-28 17:57
楼上正解
作者: tacyjay在路上    时间: 2014-5-28 20:09
本帖最后由 tacyjay在路上 于 2014-5-28 20:10 编辑

应该说,final定义的变量在初始化以后就不能改变了,是个常量;
如果final定义的变量没有进行初始化,那么,允许赋值一次。
跟他的位置在哪儿,没有什么关系。

示例:

  1. public class FinalDemo {
  2.         public static void main(String[] args) {
  3.                 final int x = 9;
  4.                 final int y;//此处并未对y进行初始化,所以可以再下面赋值一次。
  5.                 //x+=3;//报错,final定义的变量在初始化之后,就不能更改
  6.                 y=3;//允许
  7.                 //y+=2;//不允许,原因同上。
  8.                 System.out.println(x+".."+y);//9..3
  9.         }
  10. }
复制代码






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