[英]Why does println print the value of a referenced object rather than the address of the object
String myString="Plz_help";
我知道'myString'不是对象,而是存储实际对象基址的对象引用变量。 因此,“ myString”在执行时应返回一个地址
System.out.println(myString);
但是它将“ Plz_help”返回到输出。
Myclass obj_ref_var=new Myclass();
当我对我创建的其他类使用相同的System.out.println(obj_ref_var)时,它将返回地址。
当您在对象引用上调用System.out.println
时,系统将执行为该引用所引用的实际对象定义的toString()
方法。 对于String
此方法返回其值。
显然,您尚未为类定义toString()
方法,这就是为什么要获取对象类名+哈希码的原因。
好吧, System.out.println
使用引用来调用对象的toString
方法。
由于string的toString()
方法将返回字符串本身,因此将显示此内容。
但是,由于尚未覆盖MyClass
的toString
方法,因此它将返回默认的toString
,即类名+哈希码。
当您使用System.out.println()
对象时,println方法将检查它是否为null,如果为null则将其输出。 如果不为null,则调用对象的toString()
方法。 String
的toString()
方法将覆盖Object.toString()
方法以返回自身。
无论如何, System.out.println()
不会打印引用,而是打印对象本身。 Object的toString()实现返回对象的类名,后跟其hashCode。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.