总结final变量的赋值问题

转载自:http://blog.csdn.net/stellaah/article/details/6720585

final型的成员变量系统不会给予赋初值,举例说明如下:

class Mt  
{  
    final int x;  
    //static final int y;  
    void mt_f()  
    {  
    System.out.println("x="+x);  
    //System.out.println("y="+y);  
    }  
    public static void main(String[]args)  
    {   
    new Mt().mt_f();  
    }  
}  
  
/* 
报错: 
可能尚未初始化变量 x 
*/  

如果去掉final,输出 x=0
结论:new Mt()对象一产生,就会对Mt类的成员(除final型的或static final型的 )赋默认系统初值.总之,final型的成员变量系统不会给予赋初值.那么给final变量赋值的方式有哪几种呢,总结如下:

//fianl修饰的变量赋初值问题.  
class Mt  
{  
final String  mt_j;  
final String mt_k="A!";//给final型变量赋值  
static final int mt_l=90;//static修饰后,唯有这种赋值方式,让mt_l获得初值.  
    Mt(String mt)//构造方法  
    {  
        mt_j=mt;//给finl型赋初值.  
    }  
    Mt(){mt_j="x";}  
    void mt_f()  
    {  
            System.out.println("mt_j="+mt_j+"\n"+"mt_k="+mt_k+"\n"+"mt_l="+mt_l);  
    }  
  
    public static void main(String[]args)  
    {  
        new Mt("AB").mt_f();  
    }  
}  
//总结:  
//final型变量.系统不会给它赋初值.  
//final有static修饰的时候,只能在声明的时候直接给它赋值.别处没法对它进行赋值  
//比如,在构造方法里给它赋值,会报错,错误分析:静态变量(不需任何对象)直接由类名调用.  
//final没有static修饰的时候,有两种赋值:1.直接赋值.2在构造方法里给它赋值.每个构造方法必  
//须给它赋值. 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值