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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-10-21 10:58  /  2050 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马连家华 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

12 个回复

倒序浏览
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:07
import java .util.*;
class Apple
{

你不对哦,还是谢谢你
回复 使用道具 举报
黑马连家华 发表于 2012-10-21 11:14
你不对哦,还是谢谢你

额。。。那你是什么意思
回复 使用道具 举报
new String(id)

String类的构造函数中,没有直接传long类型的
回复 使用道具 举报
我是菜鸟 发表于 2012-10-21 11:39
new String(id)

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

是不是也没传int类型的?
回复 使用道具 举报
李琼 中级黑马 2012-10-21 13:46:25
7#
你看一下,String的构造函数

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

String的构造函数

String的构造函数
回复 使用道具 举报
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. }
复制代码
所以这里虽然不明白为什么,但这不是重点,我问的也不是这个问题
不过既然现在出现这个问题,那就两个问题一起问问
回复 使用道具 举报
im w 没人回答了吗 ?
回复 使用道具 举报
黑马连家华 发表于 2012-10-21 15:18
我也在Eclipse里面看过,确实没有,但用new String(1)确实能通过,老师在用EditPlus给我们写程序里也用到过n ...

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

还有把return new String(id);//改为return new Long(id).toString();
不注释掉最后一行编译通过。
回复 使用道具 举报
本帖最后由 黑马连家华 于 2012-10-21 21:00 编辑
werewolf 发表于 2012-10-21 20:29
你老师的代码段偶试了下,编译后报的错误跟你的是一样的错误。

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

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

我自己试过,不能通过
回复 使用道具 举报
算了 不纠结了,结贴吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马