专栏首页泰斗贤若如刨根问底儿————解析Java代码,看看toString的秘密

刨根问底儿————解析Java代码,看看toString的秘密

首先来看下面这段代码

package com.test;

public class ToStringTest {
    static int i = 1;

    public static void main(String[] args) {
        System.out.println("love "+new ToStringTest());
        System.out.println(new ToStringTest());
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("me "+a.i);
    }

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

运行结果为:

代码运行后,先加载静态变量,然后执行main方法。

在main方法中执行第一个语句System.out.println("love "+new ToStringTest() ),语句由内向外执行,先执行new ToStringTest(),当执行此行代码时会先创建了本类的对象,由于此类重写了在Object类里面的toString方法,首先会调用本类里面的toString方法,打印输出 “ I ”,然后返回“java ”,再打印输出Java

在Java中“System.out.println(类对象名);”实际输出的是该对象的toString()方法返回的字符串,new ToStringTest()等价于类匿名对象名.toString(),toString方法的好处是在碰到println方法的时候会被自动调用,不用显式的写出来。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java匹马行天下之JavaSE核心技术——工具类

    Byte 类将基本类型 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。 

    泰斗贤若如
  • Java常用工具类练习题

    1.请根据控制台输入的特定日期格式拆分日期 如:请输入一个日期(格式如:**月**日****年) 经过处理得到:****年**月**...

    泰斗贤若如
  • 流程控制

    练习:提示用户输入一个整数。如果该整数是5的倍数,打印“5的倍数”如果是2的倍数打印“2的倍数”

    泰斗贤若如
  • 【Java小工匠聊高并发】--CountDownLatch

      在讲CountDownLatch的应用场景之前,我们先在现实生活中,找到一个对应的场景。例如班主任带一帮孩子去春游,春游回家前,班主任需要清点人数,确保每个...

    Java小工匠
  • 使用Spring Data JPA进行数据分页与排序

    如果一次性加载成千上万的列表数据,在网页上显示将十分的耗时,用户体验不好。所以处理较大数据查询结果展现的时候,分页查询是必不可少的。分页查询必然伴随着一定的排序...

    字母哥博客
  • Hello,Go

    gaobinzhan
  • Java中lambda表达式详解

    上面的代码中,e是一个lambda的对象,根据java的继承的特性,我们可以说e对象的类型是继承自eat接口。而e1是一个正常的匿名类的对象.

    付威
  • 两个关于字符串的经典例子

    示例1: ==运算符 public static void test(){ String x = "hello"; String y = "world"; S...

    java达人
  • 高并发 threadlocal+countDownLatch+线程池走起来

    gfu
  • Java基础-day09-基础题-对象;类;封装

    Java基础-day09-基础题-对象&类&封装 1.定义手机类并测试 ? ? 代码实现: package StudentJavaSEday09; //定义手...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券