java在保证,所有的变量在使用前都得到恰当的初始化。对于方法中的局部变量,java将通过报错的形式提醒我们

    1. void f(){
    2. int i;
    3. i++;
    4. }
    1. 上述代码,编译是会报错,会提示我们没有进行初始化。<br /> 如果说一个类中的成员都是基本类型会怎样的呢? java中的基本数据类型中说到,会确保类中的每一个基本数据类型成员有初始值。我们通过下面这段代码来验证
    1. class Person1 {
    2. boolean b;char c;byte y;short s;int i;long l;double d;Person1 person1;
    3. void print(){
    4. System.out.println(b+" char的默认值:"+c+" "+y+" "+s+" "+i+" "+l+" "+f+" "+d+""+person1);
    5. }
    6. }
    7. public class Test01 {
    8. public static void main(String[] args) {
    9. Person1 person1 = new Person1();
    10. person1.print();
    11. }
    12. }
    13. output
    14. false char的默认值: 0 0 0 0 0.0 0.0null
    1. 我们可以发现,所有的数据成员的初值我们没有给出,但是输出的时候他们确实有值(char的默认值为0,所有显示时候为空白)。同样的我们定义一个类的引用时,如果为初始化为给定一个特殊的值 ——null。<br />** 3.指定初始化 **<br /> 如果我们想为某个成员变量赋初值,我们要怎么样呢?很直接的方法,直接在定义类成员变量的地方赋值.
    1. int i=10;
    1. 我们也可以用同样的方法为非基本类型的变量赋值。
    1. class Tank{}
    2. public class Test{
    3. public static void main(String[] args) {
    4. Tank t=new Tank ();
    5. }
    6. }

    如果我们没有对上述代码中的t指定初始化就要去使用他,那么是会有错误的

    1. class Tank{}
    2. public class Test{
    3. public static void main(String[] args) {
    4. Tank t;
    5. }
    6. }

    这种时候运行是会有错误的。
    4.方法初始化
    我们也可以通过方法来进行为成员变量初始化

    1. public class Test02 {
    2. int i=f();
    3. int g=g();
    4. int f(){
    5. return 1;
    6. }
    7. int g(){
    8. return -1;
    9. }
    10. }
    1. 当然这个时候调用的方法也可以带有参数,但这些参数也必须被初始化的
    1. int i=f();
    2. int f(){ return 1; }
    3. int g=g(i);
    4. int g(int x){ return x*1; }
    1. 因为方法否f()已经给i放回了1,所以说i已经被初始化。所以此时在通过g()赋值给g是可行的,如果方法里面的参数没有被初始化。那这样是不行的。
    1. int g=g(i);
    2. int f(){ return 1; }
    3. int i=f();
    4. int g(int x){ return x*1; }

    我们交换两个变量的顺序,发现这样编译出错,这个时候i还未被初始化,所以这样编写是错误的。