Java中toString方法的解释

Object类:

我们知道Java中,所有类都直接或间接的继承object类,也就是说object类是所有类的父类。所以基本上所有对象都能调用Object类中的方法,So,我们先看看JDKAPI中Object类有多少方法:

可以很清晰的看到toString方法返回的是字符串,下附详情,

现在来看一下代码,

public class Demo {

    static int  a= 1;

    public static void main(String[] args) {

        System.out.println("love "+new Demo());
        Demo d = new Demo();
        d.a++;
        System.out.println("me "+d.a);
    }

    public String toString(){
        System.out.print("I ");
        return "Java";

    }
}

这段代码,笔者在第一次看到时以为会是"love I Java",但通过编译器知道了正确是"I lova Java",

现在我们来改变下代码:

public class Demo {

    static int  a= 1;

    public static void main(String[] args) {

        System.out.println("我 "+new Demo());
        System.out.println("被");
    }

    public String toString(){
        System.out.println("调 ");
        System.out.println("用 ");
        return "\n了";

    }
}

现在我们发现结果为:

调 
用 
我 
了
被

我们知道大部分语言的代码都是从main方法进入开始执行,我们先当程序执行到"System.out.println("我 "+new Demo());"时,这里的"new Demo()"相当于"Demo d = new Demo();"中的d,可以理解为匿名对象,在本例中由于重写了toString方法,所以,不会在返回

getClass().getName() + '@' + Integer.toHexString(hashCode()),//即com.LOL_toulan.Demo@1540e19d

 当执行到new Demo();时,系统会自动调用对象的toString方法,同时会看代码中有没有重写toString方法,注意此时"

System.out.println("love "+new Demo());//并没有执行结束,

 因为System类中的方法都是static,所以当调用时系统会先解析System.out.println();方法,所以在终端先打印出“I”,然后打印出"love",最后拼接上toString方法返回的“java”。

下一行代码中,根据对象名去调用静态变量i对其进行++操作,输出me:2。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值