System.out.println(t1.toString());toString重写过为什么输出的是地址而不是内容
时间: 2024-04-07 09:29:53 浏览: 65
如果你已经重写了toString()方法,但仍然打印出了地址而不是内容,那么很可能是因为你的toString()方法中出现了错误。
在Java中,如果你重写了一个方法,但是该方法中出现了编译错误或运行时异常,那么它会调用父类的该方法,而不是调用你自己的实现。因此,如果你的toString()方法中出现了错误,它就会调用Object类中默认的toString()方法,该方法返回的是对象的地址。
要解决这个问题,你需要检查你的toString()方法的实现,确保它能够正确地返回你期望的字符串表示。你可以在方法中使用各种操作符、变量和控制流语句,以便生成一个适当的字符串。另外,还要确保你的方法不会抛出任何异常,否则它就不会按预期工作。
相关问题
System.out.println(t1.toString());toString重写过为什么输出的是地址而不是内容,举一个正确重写的的示例
当你正确地重写了toString()方法后,System.out.println(t1.toString())将会输出你期望的内容,而不是地址。
以下是一个示例,展示了如何在自定义类中重写toString()方法来返回对象的内容:
```java
public class MyClass {
private int x;
private String name;
public MyClass(int x, String name) {
this.x = x;
this.name = name;
}
@Override
public String toString() {
return "MyClass{x=" + x + ", name='" + name + '\'' + '}';
}
}
```
在这个示例中,我们定义了一个MyClass类,它有两个属性x和name。我们重写了toString()方法,使用字符串拼接来生成一个包含对象内容的字符串表示。我们可以使用以下代码来创建一个MyClass对象并打印它的内容:
```java
MyClass t1 = new MyClass(42, "hello");
System.out.println(t1.toString());
```
这将会输出以下内容:
```
MyClass{x=42, name='hello'}
```
可以看到,这个输出包含了对象的内容,而不是对象的地址。
System.out.println(t1.toString());为什么输出的是地址而不是内容
在Java中,当你打印一个对象时,它会默认调用该对象的toString()方法来获得一个字符串表示。如果你没有为该对象指定一个自定义的toString()方法,那么默认情况下,该方法会返回对象的类名,紧接着是一个“@”符号和该对象在内存中的哈希码的十六进制表示。
因此,当你执行System.out.println(t1.toString())时,它实际上是打印了一个由类名、@符号和哈希码组成的字符串,而不是该对象的内容。
如果你想输出t1对象的内容,你需要重写该对象的toString()方法,让它返回你期望的字符串表示。
阅读全文