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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

linhaismail

初级黑马

  • 黑马币:35

  • 帖子:18

  • 精华:0

© linhaismail 初级黑马   /  2017-6-19 22:51  /  1559 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

Final修饰变量作为成员变量必须赋值,作为局部变量不需要赋值,也能编译通过,为什么呢?

4 个回复

倒序浏览
      成员变量是随类初始化或对象初始化而初始化的,因此成员变量的初始值可以在定义的时候赋值或者在初始化块、构造方法中指定。对于final修饰的成员变量而言,一旦有了初始值之后,就不能被重新赋值,
final修饰局部变量时既可以在定义时候指定默认值,也可以不指定,在后面指定,但只能一次。
我是觉得是这样的。
回复 使用道具 举报
一次指定,终生不变
回复 使用道具 举报
1293587264 发表于 2017-6-20 01:16
成员变量是随类初始化或对象初始化而初始化的,因此成员变量的初始值可以在定义的时候赋值或者在初始 ...

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

final 修饰的成员变量说错了,被final 修饰的"变量" 应该叫常量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马