我对输出感到困惑。
这是第一个程序。
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
问题是为什么这些变量的行为不同?是什么原因。 这可能是一个非常简单的问题。但请好好解释一下。
感谢。
答案 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);
}
}