黑马程序员技术交流社区

标题: 复写 toString方法 [打印本页]

作者: 黑马连家华    时间: 2012-10-21 10:58
标题: 复写 toString方法
本帖最后由 黑马连家华 于 2012-10-21 21:15 编辑
  1. import java .util.*;
  2. class Apple
  3. {
  4.         private static long counter;
  5.         private final long id=counter++;
  6.         public long id()
  7.         {
  8.                 return id;
  9.         }
  10.         public String toString() {
  11.                 return new String(id);
  12.         }
  13. }
  14. class Orange
  15. {
  16. }
  17. public class Test04
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 ArrayList apples=new ArrayList();
  22.                 for (int i=0;i<3;i++)
  23.                 {
  24.                         apples.add(new Apple());
  25.                         //apples.add(new Orange());
  26.                 }
  27.                 for (int i=0;i<apples.size();i++)
  28.                 {
  29.                         System.out.println(((Apple)apples.get(i)).id());
  30.                 }
  31.                 //下面这句不注释掉 为什么会出错?
  32.                 //System.out.println(apples);
  33.         }
  34. }
复制代码

作者: 王威    时间: 2012-10-21 11:07
import java .util.*;
class Apple
{
        private static long counter;
        private final long id=counter++;
        public long id()
        {
                return id;
        }
        public String toString() {
                return new String(id+"");//这句有错,String没有这样的构造方法加上+""变成字符串
        }
}
class Orange
{
}
public class Test04
{
        public static void main(String[] args)
        {
                ArrayList apples=new ArrayList();
                for (int i=0;i<3;i++)
                {
                        apples.add(new Apple());
                        //apples.add(new Orange());
                }
                for (int i=0;i<apples.size();i++)
                {
                        System.out.println(((Apple)apples.get(i)).id());
                }
                //下面这句不注释掉 为什么会出错?
                System.out.println(apples);//这句没有错啊
        }
}
作者: 黑马连家华    时间: 2012-10-21 11:14
王威 发表于 2012-10-21 11:07
import java .util.*;
class Apple
{

你不对哦,还是谢谢你
作者: 王威    时间: 2012-10-21 11:19
黑马连家华 发表于 2012-10-21 11:14
你不对哦,还是谢谢你

额。。。那你是什么意思
作者: 李润根    时间: 2012-10-21 11:39
new String(id)

String类的构造函数中,没有直接传long类型的
作者: 黑马连家华    时间: 2012-10-21 13:14
我是菜鸟 发表于 2012-10-21 11:39
new String(id)

String类的构造函数中,没有直接传long类型的

是不是也没传int类型的?
作者: 李琼    时间: 2012-10-21 13:46
你看一下,String的构造函数

20121021134516.png (51.54 KB, 下载次数: 331)

String的构造函数

String的构造函数

作者: 黑马连家华    时间: 2012-10-21 15:18
liqiong0327 发表于 2012-10-21 13:46
你看一下,String的构造函数

我也在Eclipse里面看过,确实没有,但用new String(1)确实能通过,老师在用EditPlus给我们写程序里也用到过new String(123)这样的方法,下面是老师写的代码段
  1. class Number
  2. {
  3.         private int i;
  4.         public Number(int i)
  5.         {
  6.                 this.i=i;
  7.         }
  8.         public String toString()
  9.         {
  10.                 return new String(i);
  11.         }       
  12. }
复制代码
所以这里虽然不明白为什么,但这不是重点,我问的也不是这个问题
不过既然现在出现这个问题,那就两个问题一起问问

作者: 黑马连家华    时间: 2012-10-21 18:51
im w 没人回答了吗 ?

作者: 王晓州    时间: 2012-10-21 20:29
黑马连家华 发表于 2012-10-21 15:18
我也在Eclipse里面看过,确实没有,但用new String(1)确实能通过,老师在用EditPlus给我们写程序里也用到过n ...

:L
你老师的代码段偶试了下,编译后报的错误跟你的是一样的错误。

还有把return new String(id);//改为return new Long(id).toString();
不注释掉最后一行编译通过。

作者: 黑马连家华    时间: 2012-10-21 20:59
本帖最后由 黑马连家华 于 2012-10-21 21:00 编辑
werewolf 发表于 2012-10-21 20:29
你老师的代码段偶试了下,编译后报的错误跟你的是一样的错误。

还有把return new String(id);//改为r ...

嗯,谢谢
不注释掉最后一行最简单的方法是改成
return id+"";
但是,还不是我想要的答案
作者: 黑马连家华    时间: 2012-10-21 21:14
黑马连家华 发表于 2012-10-21 15:18
我也在Eclipse里面看过,确实没有,但用new String(1)确实能通过,老师在用EditPlus给我们写程序里也用到过n ...

我自己试过,不能通过
作者: 黑马连家华    时间: 2012-10-21 21:15
算了 不纠结了,结贴吧




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