Object类有一个public方法是toString( ),一个对象通过调用该方法可以获得该对象的字符串表示。对吗?
时间: 2024-02-22 12:54:40 浏览: 121
是的,`Object`类有一个`public`方法`toString()`,该方法的作用是返回一个字符串,该字符串表示该对象的值。
在Java中,所有的类都是`Object`类的子类,因此所有的对象都继承了`toString()`方法。在默认情况下,`toString()`方法返回的字符串表示为:
```
类名@对象的哈希码
```
例如,如果有一个类`Person`,则默认情况下调用`toString()`方法得到的字符串表示为:
```
Person@xxxxx
```
其中,`xxxxx`为该对象的哈希码。
需要注意的是,`toString()`方法返回的字符串表示只是一个默认值,通常情况下我们需要根据实际需求覆盖该方法,返回自定义的字符串表示。例如,在`Person`类中可以覆盖`toString()`方法,返回该对象的姓名和年龄:
```java
public class Person {
private String name;
private int age;
// 省略构造方法和其他方法
@Override
public String toString() {
return "Person{name=" + name + ", age=" + age + "}";
}
}
```
这样,在调用`toString()`方法时,就会返回类似于`Person{name=张三, age=20}`这样的字符串表示,更加直观和有用。
相关问题
创建一个 ArrayList, 然后向这个列表中添加一个 Loan 对象、—个Date对象、一个字符串和一个Circle对象,然后使用循环调用对象的toString()方法,来显示列表中所有的元素。
好的,下面是示例代码:
```java
import java.util.ArrayList;
import java.util.Date;
public class Main {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<Object>();
list.add(new Loan(1000, 0.05));
list.add(new Date());
list.add("Hello, world!");
list.add(new Circle(1.0));
for (Object obj : list) {
System.out.println(obj.toString());
}
}
}
class Loan {
private double loanAmount;
private double annualInterestRate;
public Loan(double loanAmount, double annualInterestRate) {
this.loanAmount = loanAmount;
this.annualInterestRate = annualInterestRate;
}
// toString() method
public String toString() {
return "Loan amount: " + loanAmount + ", Annual Interest Rate: " + annualInterestRate;
}
}
class Circle {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
// toString() method
public String toString() {
return "Circle with radius " + radius;
}
}
```
在这个示例代码中,我们创建了一个 ArrayList 对象,然后向这个列表中添加了一个 Loan 对象、-个Date对象、一个字符串和一个Circle对象。接着,我们使用 for 循环来遍历列表中的所有元素,并调用每个元素的 toString() 方法来显示它们。
输出结果如下:
```
Loan amount: 1000.0, Annual Interest Rate: 0.05
Thu Jan 28 16:53:12 CST 2021
Hello, world!
Circle with radius 1.0
```
通过这个示例代码,你可以学习到如何创建 ArrayList 对象,并向其中添加不同类型的对象。同时,你还可以学习到如何使用 for 循环来遍历 ArrayList 中的所有元素,并调用每个元素的 toString() 方法来显示它们。
编写Person类,具备属性name、age,编写两个子类Student和Teacher类,Student类除了继承父类的属性,还有属性成绩score,Teacher类还有属性工资sal。定义它们各自的构造方法(使用super),并重写Object类的toString()方法,返回属性值拼接的字符串。在测试类里创建子类对象,并调用各自的toString()方法
下面是Person、Student、Teacher类以及测试类的代码实现:
```java
// Person类
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
// Student类
public class Student extends Person {
private int score;
public Student(String name, int age, int score) {
super(name, age);
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + super.getName() + '\'' +
", age=" + super.getAge() +
", score=" + score +
'}';
}
}
// Teacher类
public class Teacher extends Person {
private double sal;
public Teacher(String name, int age, double sal) {
super(name, age);
this.sal = sal;
}
@Override
public String toString() {
return "Teacher{" +
"name='" + super.getName() + '\'' +
", age=" + super.getAge() +
", sal=" + sal +
'}';
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Person person = new Person("张三", 20);
System.out.println(person);
Student student = new Student("李四", 18, 85);
System.out.println(student);
Teacher teacher = new Teacher("王五", 30, 8000);
System.out.println(teacher);
}
}
```
在测试类中,我们分别创建了一个 Person 对象、一个 Student 对象和一个 Teacher 对象,并调用了它们各自的 toString() 方法,输出它们的属性值。由于 Student 和 Teacher 类都继承了 Person 类,因此它们也可以使用 super 关键字来访问父类中的属性和方法。
阅读全文