【问题标题】:Why do I get different results on variable value?为什么我在变量值上得到不同的结果?
【发布时间】:2015-06-22 18:49:44
【问题描述】:

我对输出有点困惑。

这是第一个程序。

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

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

谢谢。

【问题讨论】:

  • int 是一个原始值,而 String 是一个引用。
  • This answer 适用于 C#,但同样的想法适用于 Java:使用未初始化的本地可能是一个错误,而且很容易检测到;使用未初始化的成员也可能是一个错误,但很难检测到它不值得付出努力。

标签: java


【解决方案1】:

实例变量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);
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多