在Java中,toString()
方法被用来返回对象的字符串表示形式。它通常在以下几种情况下被调用:
-
显式调用:
当你直接调用对象的toString()
方法时,例如:MyClass obj = new MyClass(); System.out.println(obj.toString());
-
隐式调用:
当你将对象传递给需要字符串的上下文时,toString()
方法会被自动调用。例如:- 使用
System.out.println
或System.out.print
打印对象:MyClass obj = new MyClass(); System.out.println(obj); // 自动调用 obj.toString()
- 字符串连接操作:
MyClass obj = new MyClass(); String str = "Object: " + obj; // 自动调用 obj.toString()
- 使用
-
字符串格式化:
当使用字符串格式化方法(如String.format
)时:MyClass obj = new MyClass(); String str = String.format("Object: %s", obj); // 自动调用 obj.toString()
默认的 toString()
方法
默认情况下,toString()
方法是由java.lang.Object
类定义的,其实现如下:
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这个实现返回一个由类的名称、字符@
和对象的哈希码组成的字符串。例如:
MyClass obj = new MyClass();
System.out.println(obj.toString());
假设MyClass
没有重写toString()
方法,输出可能类似于:
MyClass@15db9742
重写 toString()
方法
为了提供更有意义的对象字符串表示形式,通常会在自定义类中重写toString()
方法。例如:
public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + "}";}
}public class MainClass {public static void main(String[] args) {Person person = new Person("Alice", 30);System.out.println(person); // 自动调用 person.toString()}
}
输出将是:
Person{name='Alice', age=30}
联系我
总结
toString()
方法在需要对象的字符串表示形式时被调用,默认实现返回对象的类名和哈希码。通过重写toString()
方法,可以提供更有意义的字符串表示,便于调试和日志记录。