String myString="Plz_help";
我开始知道'myString'不是一个对象,而是一个对象引用变量,它存储了实际对象的基地址。所以'myString'应该在我执行
时返回一个地址System.out.println(myString);
但是它将'Plz_help'返回到输出。
Myclass obj_ref_var=new Myclass();
当我对我创建的其他类使用相同的System.out.println(obj_ref_var)时,它将返回该地址。
答案 0 :(得分:5)
当您在对象引用上调用System.out.println
时,系统会执行为此引用引用的实际对象定义的toString()
方法。对于String
,此方法返回其值。
显然,您没有为您的类定义toString()
方法,这就是您获取对象类名+哈希码的原因。
答案 1 :(得分:2)
println
了解String
s并输出其内容。
当您将String
以外的内容传递给println
时,它会隐式调用该内容的toString
方法。 toString
上的默认Object
会返回您所看到的内容,即不一个地址,而是该类的名称,@
和hex version of the object's hash code
答案 2 :(得分:2)
好吧,System.out.println
使用引用来调用对象的toString
方法。
由于string的toString()
方法返回字符串本身,这就是打印的内容。
但是由于你没有覆盖toString
的{{1}}方法,它会返回默认的MyClass
,即classname + hashcode。
答案 3 :(得分:1)
当你System.out.println()
一个对象时,println方法检查它是否为null并且如果是则打印为null。如果它不为null,则调用对象的toString()
方法。 toString()
String
方法会覆盖Object.toString()
方法,以便自行返回。
无论如何,System.out.println()
不打印引用,它会打印对象本身。 Object的toString()实现返回对象的类名,后跟hashCode。