A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a2015272261 中级黑马   /  2016-3-31 19:24  /  917 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                Integer i = new Integer(1);
                System.out.println(i.toString());

这个程序Integer没有重写toString(),

                ArrayList list = new ArrayList();
               
                //存放三个Point实例到集合中
                Point point = new Point(1,2);
                list.add(point);
                list.add(new Point(3,4));
                list.add(new Point(5,6));
               
                System.out.println(list);
这个程序中ArrayList重写了toString(),我想问问为什么有些重写有的没有呢

5 个回复

倒序浏览
这个我也没搞清楚,同求大神指点
回复 使用道具 举报
如果你看过源代码,就知道Integer是重写了toString方法的,否则你用toString返回的就不是Integer对象的整型数值,而是对象的引用值.对toString方法的引用是根据需要进行的.有的对象转换成字符串有意义,所以在库文件中将其重写,而有的对象没有特殊意义,就继承Object类的toString方法
回复 使用道具 举报
public String toString() {
        return toString(value);
    }
这个就是Integer重写Object类toString方法的源代码,Integer类还重载了toString方法,
例如public static String toString(int i);
public static String toString(int i, int radix);没事可以多研究一下源代码,很多东西单纯的思考是不会有结果的,看看源代码就清楚了
回复 使用道具 举报
学习了,集合学的头大
回复 使用道具 举报
直接打印对象名,如果出现的是一堆看不懂的乱码(第一个是[,中间是@,后面是一串16进制的数字),就说明没有重写toString方法,如果出现的结果是和对象名.toString()相同,说明已经被重写,可能是它本身重写的,也可能是它的父类重写的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马