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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悠然丶 中级黑马   /  2014-4-19 20:44  /  1227 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Something {
    final int i;  
    public void doSomething() {
         System.out.println("i = " + i);
    }
}
//i 是成员变量不是说,可以不用显示初始化么.怎么就出错了求解?

4 个回复

倒序浏览
final数据

   许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很有用的,例如:

1,一个编译时恒定不变的常量

2,一个在运行时初始化,而你不希望它被改变。

   对于编译期常量的这种情况,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译期就执行计算式,这减轻了一些运行时的负担。在java中,这类常量必须是基本类型,并且以final表示。在对这个常量定义时,必须进行赋值。

   一个即是static又是fianl的域只占一段不能改变的存储空间。

   当final应用于对象引用时,而不是基本类型时,其含义有些让人疑惑。对基本类型使用fianl不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可以修改的。一旦一个final引用被初始化指向一个对象,这个引用将不能在指向其他对象。java并未提供对任何对象恒定不变的支持。这一限制也通用适用于数组,它也是对象。


final来定义数据时必须赋值,哪怕你想让它为默认值,也要写上i=0;哪怕是空对象,也要写上null

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
成员变量被final修饰了!被final修饰的成员变量不能被,内部类调用
回复 使用道具 举报
左拉 发表于 2014-4-19 20:49
final数据

   许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很 ...

好吧,我懂了..谢谢
回复 使用道具 举报
final修饰符修饰的变量是常量,需要赋初值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马