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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜默 金牌黑马   /  2013-6-7 11:05  /  1480 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
}

4 个回复

倒序浏览
你重写C的toString方法
public String toString() {
    return this.s + "    " + this.y;
}
回复 使用道具 举报
a464538715 发表于 2013-6-7 11:09
你重写C的toString方法
public String toString() {
    return this.s + "    " + this.y;

我想知道是默认调用输出的结果..
回复 使用道具 举报

  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在堆内存中的地址,而不是具体调用的函数内的值

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
“结果是[abc, efg, 123, c@c17164]  求解是不是传入字符串,就直接输出字符串,其他类的对象就是输出哈希值,或者其他的..”…………
我觉得我们可以想你说的那样理解。
因为 s 中存放的是用new开辟的内存首地址,打印的是c@c17164
System.out.println("xxxx");调用的是PrintStream类的println(String)方法,底层按照平台的默认字符编码将字符串的字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马