为什么我在变量值上得到不同的结果?

时间:2015-06-22 18:49:45

标签: java

我对输出感到困惑。

这是第一个程序。

class A {
    private int price;
    private String name;

    public int getPrice() {
        return price;
    }
    public String getName() {
        return name;
    }
}

class B {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.getName());
        System.out.println(a.getPrice());
    }
}

该程序编译无误。变量有值。

输出 -

 null
 0

第二个程序是,

class B {
    public void value() {
        int x;
        System.out.println(x);
    }
}

这个程序甚至不会编译。

B.java:4: error: variable x might not have been initialized

问题是为什么这些变量的行为不同?是什么原因。 这可能是一个非常简单的问题。但请好好解释一下。

感谢。

1 个答案:

答案 0 :(得分:8)

实例变量class内声明。不在method内。

class A {
   private int price; //instance variable
   private String name; //instance variable
}

实例变量总是得到默认值integers 0, floating points 0.0, booleans false, String / references null)。

局部变量method内声明。

class B {
   public void value() {
       int x; // local variable
    }
}

本地变量在使用前必须初始化

 class B {
           public void value() {
               int x = 2; // initialize before use it.
               System.out.println(x);
            }
        }