小白学Java代码:重写toString()方法

重写toString()方法

package com.jian.demo7;

public class Car extends Object {
    //编写实例变量
    String id;
    String brand;
    String color;
    int price;

    public Car() {
    }

    public Car(String id, String brand, String color, int price) {
        this.id = id;
        this.brand = brand;
        this.color = color;
        this.price = price;
    }

    //第一种方式:光标放在子类中,按Ctrl + O选择要重写的父类方法toString,按回车键,但是该方法体中默认依然调用父类中的方法,则需要手动编写需要实现功能的代码
    /*@Override
    public String toString() {
        return "车牌号:" + this.id + ",品牌:" + this.brand + ",颜色:" + this.color + ",价格:" + this.price;
    }*/

    @Override
    public String toString() {
        return "Car{" +
                "id='" + id + '\'' +
                ", brand='" + brand + '\'' +
                ", color='" + color + '\'' +
                ", price=" + price +
                '}';
    }
}
package com.jian.demo7;

public class Test {
    public static void main(String[] args) {
        //创建车对象
        Car c = new Car();
        /*
            通过运行得到:
                1.当只输出对象名c时,则输出:com.jian.demo7.Car@4554617c
                  也就是输出:完整类名@十六进制数
                2.原因:
                  在java中,当只输出对象名时,系统默认调用toString()方法
                  也就是说c 等价于编写c.toString()
                  当前对象名c是Car类型,因此在输出对象名c时,先在Car类中找toString()方法,如果没有找到则再去父类Object类中找,因此目前对象名c也就是调用Object类中的toString方法
                  Object类中的toSring方法体:getClass().getName() + "@" + Integer.toHexString(hashCode());
                 3.练习:当只输出对象名时,则输出该对象中所有的属性值
                 4.解决办法:
                    使用toString方法完成
                    而toString方法是Object类中的,但是Object类中的方法不能满足子类的需求,则需要在子类中重写父类的toString方法
                    第一种方式:光标放在子类中,按Ctrl + O选择要重写的父类方法toString,按回车键,但是该方法体中默认依然调用父类中的方法,则需要手动编写需要实现功能的代码
                    第二种方式:光标放在子类中,按Alt + Insert键,选择要重写的toString方法,然后按回车键,选择要得到的实例变量的值,然后按回车键,则在方法体中自动生成代码 ,比较常用
                  5.其实使用第二种方式重写,类似于之前编写的print方法,来实现输出实例变量中的值
         */
        System.out.println(c.toString()); //等价于c

        c = new Car("京A12345", "大众", "白色", 120000);
        System.out.println(c);
    }
}

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是Java重写toString方法的示例: ```java public class MyClass { private String name; private int age; public MyClass(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "MyClass{" + "name='" + name + '\'' + ", age=" + age + '}'; } } ``` 在这个示例中,我们创建了一个名为`MyClass`的类,并在构造函数中初始化了`name`和`age`实例变量。我们使用`@Override`注解来重写`toString`方法,该方法将返回一个包含`name`和`age`字段值的字符串表示形式。注意,我们在返回的字符串中使用了字符串连接运算符`+`和转义字符`\`来生成一个格式化的字符串。 ### 回答2: 在Java中,每个类都会隐式继承自Object类,它包含了一些通用的方法,其中包括toString()方法。这个方法的作用是将对象转换成字符串表示形式。当我们没有在类中显式地重写toString()方法时,调用对象的toString()方法会返回一个由类名,'@'符号和对象的哈希码组成的字符串。 为了让toString()方法返回符合我们的需求的字符串表示形式,我们可以在类中重写方法。通过重写toString()方法,我们可以自定义返回的字符串,以使其包含我们认为重要的属性或状态信息。 重写toString()方法的步骤如下: 1. 在类中加入toString()方法的定义。 2. 在该方法内部,构造一个包含类的属性或状态信息的字符串。可以使用字符串拼接操作符("+")将不同的属性和信息连接在一起。 3. 返回构造的字符串。 例如,假设我们有一个名为Student的类,它包含生的姓名和年龄信息。我们可以重写该类的toString()方法,以返回一个包含生姓名和年龄的字符串表示形式。代码示例如下: public class Student { private String name; private int age; // 构造函数和其他方法 @Override public String toString() { return "Student: [name=" + name + ", age=" + age + "]"; } } 通过调用Student对象的toString()方法,可以得到一个类似于"Student: [name=Tom, age=20]"的字符串。这个字符串提供了生的姓名和年龄信息,更符合我们的需求。 总之,重写toString()方法可以让我们得到符合需求的对象字符串表示形式,以便更好地理解和调试代码。 ### 回答3: 在Java中,每个类都继承自Object类,而Object类中有一个名为toString()的方法。这个方法用于返回一个表示该对象的字符串。 然而,Object类中默认的toString()方法返回的是对象的哈希码值的字符串表示。这对于实际开发中的调试和打印输出来说往往不够直观和有用。 因此,在自定义类中,我们可以重写toString()方法,来返回我们所需的信息。 要重写toString()方法,我们需要按照以下步骤进行: 1. 在类中添加一个public修饰的toString()方法。 2. 在该方法中,以字符串的形式返回我们所需的信息。 例如,假设我们有一个名为Person的类,该类具有name和age两个属性,我们希望在调用toString()方法时返回"姓名:XXX,年龄:XXX"的字符串表示。 我们可以这样重写toString()方法: ``` public class Person { private String name; private int age; // 构造方法和其他方法省略 @Override public String toString() { return "姓名:" + name + ",年龄:" + age; } } ``` 这样,当我们通过调用Person对象的toString()方法时,就会返回符合我们要求的字符串表示。 通过重写toString()方法,我们可以在输出对象时获得更清晰和有用的信息,方便调试和理解代码。而且,许多Java类库中的类,如String、Integer等,已经重写toString()方法,使得输出它们时获得更有意义的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值