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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yang1352546 中级黑马   /  2014-5-28 16:24  /  1200 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yang1352546 于 2014-5-29 20:29 编辑

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

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

3 个回复

倒序浏览
final修饰的变量叫最终变量。也就是一加载就初始化了。后边就不能动了。就好像一个人 一去上户口他的身份证号码就固定了。当你后边去想弄个假身份证号码 那你就违法了。
不仅如此,final还有一些其他的特型,比如final修饰的类不能被继承,final修饰的方法不能被覆盖,道理都是一样的。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
本帖最后由 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. }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马