黑马程序员技术交流社区

标题: 求解直接打印集合名的输出结果? [打印本页]

作者: 夜默    时间: 2013-6-7 11:05
标题: 求解直接打印集合名的输出结果?
本帖最后由 4968547610317 于 2013-6-7 12:15 编辑

import java.util.ArrayList;

public class Test {
  public static void main(String[] args) {
  // TODO Auto-generated method stub
  ArrayList a=new ArrayList();
  a.add("abc");
  a.add("efg");
  a.add("123");
  c s=new c();
  a.add(s);
  System.out.print(a);//  结果是[abc, efg, 123, c@c17164]  求解是不是传入字符串,就直接输出字符串,其他类的对象就是输出哈希值,或者其他的..
}
}
class  c{
int s=1;
int y=2;
}

作者: a464538715    时间: 2013-6-7 11:09
你重写C的toString方法
public String toString() {
    return this.s + "    " + this.y;
}
作者: 夜默    时间: 2013-6-7 11:12
a464538715 发表于 2013-6-7 11:09
你重写C的toString方法
public String toString() {
    return this.s + "    " + this.y;

我想知道是默认调用输出的结果..
作者: 杜光    时间: 2013-6-7 11:39

  1. import java.util.ArrayList;

  2. public class Test
  3. {
  4.   public static void main(String[] args)
  5.         {
  6.                 // TODO Auto-generated method stub
  7.                 ArrayList a=new ArrayList();
  8.                 a.add("abc");
  9.                 a.add("efg");
  10.                 a.add("123");
  11.                 c s=new c();
  12.                 a.add(c.Demo());

  13.                 a.add(d.Demo());
  14.                 System.out.println(a);

  15.                 System.out.println(a.toArray());
  16.                   //  结果是[abc, efg, 123, 1, 2, 3]
  17.         }
  18. }
  19.         class  c
  20.         {
  21.                 public static String Demo()
  22.                 {
  23.                         int s=1;
  24.                         int y=2;
  25.                         return s+","+y;

  26.                 }
  27.                
  28.         }
  29.         class  d
  30.         {
  31.                 public static int Demo()
  32.                 {
  33.                         int h=3;
  34.                        
  35.                         return h;

  36.                 }
  37.                
  38.         }



复制代码
//集合中字符或字符串输出调用的是 toString()方法
        //不知道你是不是要上面的结果!
        //而你的代码中a.add(c),打印出来的是这个c在堆内存中的地址,而不是具体调用的函数内的值

作者: 花心々小土豆    时间: 2013-6-7 12:03
“结果是[abc, efg, 123, c@c17164]  求解是不是传入字符串,就直接输出字符串,其他类的对象就是输出哈希值,或者其他的..”…………
我觉得我们可以想你说的那样理解。
因为 s 中存放的是用new开辟的内存首地址,打印的是c@c17164
System.out.println("xxxx");调用的是PrintStream类的println(String)方法,底层按照平台的默认字符编码将字符串的字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。




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