李刚的疯狂java,关于final这一段是不是有矛盾啊?

方紫涵 2020-07-15 11:11:56
大家看看为什前后矛盾?哪个对?


...全文
1789 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2020-07-16
  • 打赏
  • 举报
回复
应该是这样的。
wowjp 2020-07-16
  • 打赏
  • 举报
回复
加油 相信自己
sinat_36840310 2020-07-15
  • 打赏
  • 举报
回复
初始化代码块实在类实例化阶段执行的,而类的成员变量age的初始值在此时尚未分配、
qq_39936465 2020-07-15
  • 打赏
  • 举报
回复
引用 3 楼 方紫涵 的回复:
请看一楼的截图
文章写的很清楚可以在静态初始化块,初始化块和构造法中给final变量初始化。 {}就是初始化代码块 age 没有赋值,第一句打印会报错,赋值后,第3句打印就不会报错了
方紫涵 2020-07-15
  • 打赏
  • 举报
回复
引用 2 楼 来自底层程序猿的仰望的回复:
没毛病,你初始化没有赋值,直接使用是会报错的
看一楼的截图啊。。。。
方紫涵 2020-07-15
  • 打赏
  • 举报
回复
请看一楼的截图
你看见了吗° 2020-07-15
  • 打赏
  • 举报
回复
没毛病,你初始化没有赋值,直接使用是会报错的
方紫涵 2020-07-15
  • 打赏
  • 举报
回复
亦夜 2020-07-15
  • 打赏
  • 举报
回复
注意前面的过渡,你圈起来的部分指的是成员变量赋值,如果没有赋值会有默认值
八爻老骥 2020-07-15
  • 打赏
  • 举报
回复
final变量没有默认值,必须显式一次性赋值,否则会报错。正如7楼所说,那段圈起来的内容应该说的是普通成员字段,普通成员字段会有默认值。
捏造的信仰 2020-07-15
  • 打赏
  • 举报
回复
前面那段没有注明必须是非 final 修饰的成员
你看见了吗° 2020-07-15
  • 打赏
  • 举报
回复
变量要先初始化赋值后,才能调用,否则就会报错 而且编译器编译在同块内的代码是从上往下的,会先编译你的第一行打印代码,然后在编译赋值行,但是你在第一行已经报错了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧