zoukankan      html  css  js  c++  java
  • 在java中为啥要重写toString 方法?

    先定义一个test5类。并写它的get,set方法。

    package test5;
    
    public class Test5 {
        private String name;
        private String sex;
        private int No;
        
        
        public void Show(){
            System.out.println("这是我的展示方法!!!!");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public int getNo() {
            return No;
        }
        public void setNo(int no) {
            this.No = no;
        }
    }
    
    
    然后定义一个带有主函数的test6的类,如下:
    
    package test5;
    
    public class Test6 {
    public static void main(String[] args) {
        Class<?> demo= null;
        try {
            demo=Class.forName("test5.Test5");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Test5 test5= new Test5();
        test5.setName("xiaoming");
        test5.setNo(001);
        test5.setSex("man");
        System.out.println(test5);
    }
    }

    运行上面的程序发现,结果如下:

    test5.Test5@e2cb55

    显然这个并不是我们所想要得到的这个test5的属性值,原因很简单,就是object类里的toString只是把字符串的直接打印,

    数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。而上面的结果就是test5所对应的哈希值。

    如果想要得到test5的各个属性值应该重写toString方法。如下:

    public String toString(){
            return "["+this.name+"  "+this.sex+"  "+this.No+"]";
        }

    则Test5应该写成如下:

    package test5;
    
    public class Test5 {
        private String name;
        private String sex;
        private int No;
        
        public String toString(){
            return "["+this.name+"  "+this.sex+"  "+this.No+"]";
        }
        public void Show(){
            System.out.println("这是我的展示方法!!!!");
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public int getNo() {
            return No;
        }
        public void setNo(int no) {
            this.No = no;
        }
    }

    这次再运行test6时发现结果是:

    [xiaoming  man  1]
    如果错过太阳时你流了泪,那你也要错过群星了。
    在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
    不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。
  • 相关阅读:
    BZOJ4240 有趣的家庭菜园(贪心+树状数组)
    BZOJ4241 历史研究(莫队)
    BZOJ4237 稻草人(分治+树状数组+单调栈)
    BZOJ4236 JOIOJI
    洛谷 P3765 总统选举 解题报告
    洛谷 P1903 [国家集训队]数颜色 解题报告
    洛谷 P4514 上帝造题的七分钟 解题报告
    洛谷 P3302 [SDOI2013]森林 解题报告
    洛谷 P3437 [POI2006]TET-Tetris 3D 解题报告
    洛谷 P4008 [NOI2003]文本编辑器 解题报告
  • 原文地址:https://www.cnblogs.com/szrs/p/12165336.html
Copyright © 2011-2022 走看看