java在保证,所有的变量在使用前都得到恰当的初始化。对于方法中的局部变量,java将通过报错的形式提醒我们
void f(){int i;i++;}
上述代码,编译是会报错,会提示我们没有进行初始化。<br /> 如果说一个类中的成员都是基本类型会怎样的呢? 在java中的基本数据类型中说到,会确保类中的每一个基本数据类型成员有初始值。我们通过下面这段代码来验证
class Person1 {boolean b;char c;byte y;short s;int i;long l;double d;Person1 person1;void print(){System.out.println(b+" char的默认值:"+c+" "+y+" "+s+" "+i+" "+l+" "+f+" "+d+""+person1);}}public class Test01 {public static void main(String[] args) {Person1 person1 = new Person1();person1.print();}}outputfalse char的默认值: 0 0 0 0 0.0 0.0null
我们可以发现,所有的数据成员的初值我们没有给出,但是输出的时候他们确实有值(char的默认值为0,所有显示时候为空白)。同样的我们定义一个类的引用时,如果为初始化为给定一个特殊的值 ——null。<br />** 3.指定初始化 **<br /> 如果我们想为某个成员变量赋初值,我们要怎么样呢?很直接的方法,直接在定义类成员变量的地方赋值.
int i=10;
我们也可以用同样的方法为非基本类型的变量赋值。
class Tank{}public class Test{public static void main(String[] args) {Tank t=new Tank ();}}
如果我们没有对上述代码中的t指定初始化就要去使用他,那么是会有错误的
class Tank{}public class Test{public static void main(String[] args) {Tank t;}}
这种时候运行是会有错误的。
4.方法初始化
我们也可以通过方法来进行为成员变量初始化
public class Test02 {int i=f();int g=g();int f(){return 1;}int g(){return -1;}}
当然这个时候调用的方法也可以带有参数,但这些参数也必须被初始化的
int i=f();int f(){ return 1; }int g=g(i);int g(int x){ return x*1; }
因为方法否f()已经给i放回了1,所以说i已经被初始化。所以此时在通过g()赋值给g是可行的,如果方法里面的参数没有被初始化。那这样是不行的。
int g=g(i);int f(){ return 1; }int i=f();int g(int x){ return x*1; }
我们交换两个变量的顺序,发现这样编译出错,这个时候i还未被初始化,所以这样编写是错误的。
