输出是什么?

What is the output?

下面第1行显示的是什么? BlueJ 打印出 A@18fea98,但我认为这是不正确的。请帮忙,谢谢。

class A{
  private int x;
  public A(){
    x=0;
  }
}

//test code in client program
A test = new A();
out.println(test);//LINE 1

默认情况下,out.println(obj) 将在对象测试上调用 toString 方法,默认情况下将 return toString 所在对象的 HashBased 内存位置已调用。

在您的场景中:A@18fea98

这是预期的输出。如果你需要打印 x 属性的值,你有以下两种选择

  1. 调用getter获取属性值
  2. 将 A class 上的 toString 方法覆盖为 return 您想要的表示

例如:

    class A{
       private int x;
       public A() { 
         x = 0;
       }

       public String toString() {
          return "A:"+x;
       }
   }