2016-02-07 103 views
-3

第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 
+1

你还指望它来打印? – Amit

+0

这是正确的 - http://stackoverflow.com/questions/4712139/why-does-the-default-object-tostring-include-the-hashcode – radoh

+2

“类Object的toString方法返回一个字符串组成的名称对象是实例的类,符号字符“@”和对象的哈希代码的无符号十六进制表示形式。“ – BoDidely

回答

0

默认情况下,out.println(obj)将调用对象上的测试方法toString,默认情况下将返回其上toString被调用对象的HashBased存储器位置。

在您的方案:[email protected]

其中,预计输出。如果您需要打印的X属性的值,你有以下两种选择

  1. 呼叫吸气来获取属性的值
  2. 重写toString方法上的一个类来返回你想要
  3. 表示

例如:

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

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

谢谢,我如何重写toString方法? –

+0

我已经用示例实现更新了答案,在当前情况下输出将为“A:0”。根据需要随意修改toString实现。如果答案满意,请接受答案,以便其他人可能会觉得有帮助 –