• JAVA的toString方法的一个小例子


    Object是一个抽象类,他有很有方法,其中的toString方法是我们常见的一个方法,我们可以看这段代码

    package com.com.day1;

    public class ToStringTest {
    static int i=1;
    public static void main(String args[]){
    System.out.println("love "+new ToStringTest());
    ToStringTest a=new ToStringTest();
    a.i++;
    System.out.println("me "+a.i);
    }
    public String toString(){
    System.out.print("I ");
    return "java";
    }
    }

    其执行结果为:

     

    那么为什么会出现上面的运行结果?

    首先我们可以在JAVA API文档中查找Object类里面的toString方法;

     

     看不懂了?没关系,我们来实现一下:

    package com.com.day1;
    
    public class ToStringTest {
        static int i=1;
        public static void main(String args[]){
            System.out.println(new ToStringTest());
        }
    }

    总结:当我们直接调用对象的时候会输出 类名@对象的哈希码

    再来一个测试

    package com.com.day1;
    
    public class ToStringTest {
        static int i=1;
        public static void main(String args[]){
            System.out.println(new ToStringTest());
        }
        public String toString(){
            return "java";
        }
    }

    总结:当我们重写toString方法时会return返回对应的字符串

    再来一个测试

    package com.com.day1;
    
    public class ToStringTest {
        static int i=1;
        public static void main(String args[]){
            System.out.println("love "+new ToStringTest());
        }
        public String toString(){
            return "java";
        }
    }

    总结:toString方法可以通过+和其他类型连接起来而且是转为字符串类型连接

    这样我们就有头绪了,再看这个测试

    package com.com.day1;
    
    public class ToStringTest {
        static int i=1;
        public static void main(String args[]){
            System.out.println("love "+new ToStringTest());
        }
        public String toString(){
            System.out.print("I ");
            return "java";
        }
    }

    总结:在输出之前会调用toString方法,解析这个方法时会先输出 I 之后再输出 love java

    package com.com.day1;
    
    public class ToStringTest {
        static int i=1;
        public static void main(String args[]){
            ToStringTest a=new ToStringTest();
            a.i++;
            System.out.println("me "+a.i);
        }
        public String toString(){
            System.out.print("I ");
            return "java";
        }
    }

    有个疑问?为何这个地方ToStringTest a=new ToStringTest()没有调用这个方法?

    总结:在用System.out.println();z输出该类的时候(有点想c++cout的重载),会调用toString函数。将该类与String类拼接时也会调用该类。

  • 相关阅读:
    SQL多表查询:内连接、外连接(左连接、右连接)、全连接、交叉连接
    PL/SQL Developer基本用法
    Oracle中存储过程与函数的区别
    C#反射动态调用dll中的方法
    WebClient模拟发送Post请求
    C#字符串、字节数组和内存流间的相互转换
    C#调用WebService
    VS2008安装SP1补丁后智能提示从中文变为英文的解决办法
    C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)
    VS2008创建单元测试
  • 原文地址:https://www.cnblogs.com/almm/p/toString.html
Copyright © 2020-2023  润新知