Java 字符串对象引用变量实际存储了什么?
如果我们查看toString()方法的源代码:Java 字符串对象引用变量实际存储了什么?,java,string,object,reference,tostring,Java,String,Object,Reference,Tostring,如果我们查看toString()方法的源代码: 有人能解释一下toString()方法(在String类中被重写)返回什么以及返回的值在哪里吗?请注意,java中的每个对象都是引用。虽然Java使用引用,但看起来您正在处理对象,因为在调用方法时不必关心引用 Object#toString方法需要返回一个String引用。在String的情况下,它只返回自身,因为这是字符串的最佳字符串表示形式 System.out::println可以明确地使用Strings,因为它对字符串重载。它将直接打印字符
有人能解释一下toString()方法(在String类中被重写)返回什么以及返回的值在哪里吗?请注意,java中的每个对象都是引用。虽然Java使用引用,但看起来您正在处理对象,因为在调用方法时不必关心引用
Object#toString
方法需要返回一个String
引用。在String
的情况下,它只返回自身,因为这是字符串的最佳字符串表示形式
System.out::println
可以明确地使用String
s,因为它对字符串重载。它将直接打印字符串内容(或者,如果传递的字符串为null
,它将打印“null”
)
采用常规对象
的重载方法调用传递对象的toString
方法并打印该方法(或者如果传递的对象是null
,则打印“null”
)。我可能不太理解您的问题,但这里有一个尝试。println()语句在java中非常方便(尤其是初学者),因为它会自动接收所有基本数据类型并在可视化输出中打印出来
它可能无法打印hashcode或引用地址的原因是因为println具有上述易用性。Java不使用指针,因此如果您想准确地找到引用地址,可能会有点麻烦。但是如果你想对引用做更多的研究,C或C++指针算法可以帮助你记住它。我不太理解这个问题——它返回一个字符串,就像每个其他的代码> toString 。它覆盖默认的对象.toString
,因此它返回有问题的字符串,而不是根据类的名称及其哈希代码构建字符串。如果它没有重写toString
,它也会做同样的事情——返回类的名称+hashcode。您能告诉我在上述代码中引用变量(a)中实际存储了什么吗?引用包含类型(String
)和实际数据的内存位置。实际数据包含字符串的长度、字符和其他内容。
/**
* This object (which is already a string!) is itself returned.
*
* @return the string itself.
*/
public String toString() {
return this;
}