关于JAVA中变量的初始化及类属性的默认值问题
先看两个例程: 1.VariableInitialization.java public class VarialbleInitialization { public static void main(String args[]) { int x, y; y=x+1; System.out.println(y); } } 利用JAVAC编译后提示:Variable x may not be initialized.显示在第四行中用到的x可能未被初始化,不可参与运算。 2.ClassAttribute.java public class ClassAttribute { public static void main(String args[]) { Circle aCircle=new Circle(); System.out.println("半径为:"+aCircle.radius+"/n面积为:"+aCircle.showArea()); } } class Circle { int radius; double showArea() { return Math.PI*Math.pow(radius, 2); } } 运行结果为: 半径为:0 面积为:0.0 非但没有报错,还给出了可用的运行结果。Circle类中的radius并没有赋初值,但却可以正常使用,而例1里main()方法中的x未赋初值却被告有错。其实问题就在这里,在JAVA中: Local variables must be initialized before they can be used. 而在类定义中的属性若不赋予初值,则JAVA会自动赋予这个属性一个默认值,以下为类的属性的默认值表: 数据类型 默认值 boolean false char /u0000 整形(byte,short,int,long) 0 浮点型(float, double) +0.0f或+0.0d 参考型 null 总结为一句话便是类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则JAVA会按上表为其添加默认值;方法里定义的数据成员称为变量,变量在参与运算之前必须赋初值。
1、一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: Boolean false Char /u0000(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d 如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他初始化,否则将得到编译错误的提示; Trackback: