黑马程序员技术交流社区

标题: 覆写toString出现的问题 [打印本页]

作者: 刘文飞    时间: 2012-10-21 19:24
标题: 覆写toString出现的问题
本帖最后由 刘文飞 于 2012-10-22 22:19 编辑

代码如下,问题见红色注释
————————————————————————————————————————
class Person{
        private int age;
        public Person(){}
        public Person(int age){
                this.age = age;
        }
        public void setAge(int age){
                this.age = age;
        }
        public int getAge(){
                return this.age;
        }
        public String toString(){
                return "Age" + "\t" + this.age;
                //return this.age;单独只是return this.age怎么就出现了类型转换错误了?前面加上字符串了就能完成自动转换?
        }
        
}
public class ConstructionDemo01{
        public static void main(String args[]){
                Person per1 = new Person();//具有有参构造的时候覆写了默认的无参构造
                per1.setAge(20);
                System.out.println(per1);
        }
}


作者: 给生活加点料    时间: 2012-10-21 19:37
个人理解,首先你toString方法——  返回的是String
而这里的age  是int类型。  所以前面加上字符串会自动完成强转操作。
作者: 江苏孙浩    时间: 2012-10-21 19:49
个人理解:
前面加上字符传 “” + age,那么首先对于“”生成一个String对象,它调用重载的 + 操作符,得到的结果是String
但是如果直接写age,由于age只是个基本类型,并没有toString()可以调用,没有办法从 int 转型为 String
作者: 杨雪松    时间: 2012-10-21 20:03
数据类型不一样,程序没办法调用,
之后你的" "+就能帮你完成转换了
作者: 张飞年    时间: 2012-10-21 20:14
本帖最后由 张飞年 于 2012-10-21 20:17 编辑

这种问题楼主不要走死脑筋哦,基本数据转字符串二种方法:一是直接加个空串“”二是用Strng.valueOf().
这里是return一个字符串,你如果直接给一个基本数据类型int人家当然不干 了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2