Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串对象引用变量实际存储了什么?_Java_String_Object_Reference_Tostring - Fatal编程技术网

Java 字符串对象引用变量实际存储了什么?

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()方法的源代码:


有人能解释一下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;
}