黑马程序员技术交流社区

标题: final修饰变量的问题 [打印本页]

作者: linhaismail    时间: 2017-6-19 22:51
标题: final修饰变量的问题
Final修饰变量作为成员变量必须赋值,作为局部变量不需要赋值,也能编译通过,为什么呢?
作者: 1293587264    时间: 2017-6-20 01:16
      成员变量是随类初始化或对象初始化而初始化的,因此成员变量的初始值可以在定义的时候赋值或者在初始化块、构造方法中指定。对于final修饰的成员变量而言,一旦有了初始值之后,就不能被重新赋值,
final修饰局部变量时既可以在定义时候指定默认值,也可以不指定,在后面指定,但只能一次。
我是觉得是这样的。
作者: 泥奏凯    时间: 2017-6-20 09:19
一次指定,终生不变
作者: linhaismail    时间: 2017-6-20 21:59
1293587264 发表于 2017-6-20 01:16
成员变量是随类初始化或对象初始化而初始化的,因此成员变量的初始值可以在定义的时候赋值或者在初始 ...

这个我知道,我好奇的是为什么局部变量、成员变量、甚至静态修饰的变量不初始化,只要不调用,都能编译通过,但是final修饰的成员变量不行。
作者: as2991    时间: 2017-6-22 17:30
linhaismail 发表于 2017-6-20 21:59
这个我知道,我好奇的是为什么局部变量、成员变量、甚至静态修饰的变量不初始化,只要不调用,都能编译通 ...

final 修饰的成员变量说错了,被final 修饰的"变量" 应该叫常量




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