总结final变量的赋值问题

来源:互联网 发布:帝国时代地图编辑软件 编辑:程序博客网 时间:2024/05/24 00:53

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变量赋值的方式有哪几种呢,总结如下:

//final修饰的变量赋初值问题.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;//给final型赋初值.}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在构造方法里给它赋值.每个构造方法必//须给它赋值.