Java面向对象程序设计-集合容器(toString方法)

以下是翁恺老师3.3.1集合容器的示范代码:

class Value{   
    private int i;  
    public void set(int i){this.i=i;}
    public int get(){return i;}
    public String toString(){return ""+i; }   //注意这句的有无
}

public class NoteBook {
    public  static  void main(String[] args) {
        Value v=new Value();
        v.set(10);
        System.out.println(v);
    }
}

public String toString(){return ""+i; };       

有这句代码时输出10,没有这句时输出notebook.Value@2d554825

解释:

  1. 默认的toString()方法

    • 在Java中,所有类都是Object类的子类,Object类提供了一个toString()方法。
    • Object类的默认toString()方法返回的是类的名字和对象的哈希码(对象的内存地址的哈希表示)。例如:notebook.Value@2d554825
  2. 重写toString()方法

    • 在类Value中重写了toString()方法,返回成员变量i的字符串表示。
    • 这样,当调用System.out.println(v)时,会调用v对象的toString()方法,输出i的值。

toString()方法

System.out.println(v) 实际上调用了 v.toString() 方法

在 Java 中,println 方法被设计为处理各种类型的参数,包括对象。为了将对象转换为字符串,println 方法会调用对象的 toString() 方法。具体来说,以下是工作原理的详细解释:

  1. println 方法的重载

    • System.out.println 方法有多个重载版本,可以处理不同类型的参数,包括 intfloatcharStringboolean、对象等等。
    • println 方法接收到一个对象作为参数时,它实际上调用的是接受 Object 类型参数的版本。
  2. ObjecttoString() 方法

    • println 方法中,若参数是一个对象(例如 v),Java 会自动调用该对象的 toString() 方法。
    • toString() 方法是 Object 类中的一个方法,所有类都继承了 Object 类,因此每个类都有 toString() 方法。
    • 如果没有在自定义类中重写 toString() 方法,则会调用 Object 类中的默认实现,返回类名和对象的哈希码。
  3. 具体的调用过程

    • 当执行 System.out.println(v) 时,Java 实际上执行了 System.out.println(v.toString())
    • 如果 v 的类中重写了 toString() 方法,则调用重写的方法;否则,调用默认的 Object.toString() 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值