黑马程序员技术交流社区

标题: 集合问题 [打印本页]

作者: 高双武    时间: 2011-11-17 09:22
标题: 集合问题
package execisetest;
import java.util.*;
public class CollectionTest {
        public static void main(String [] args){
                ArrayList al=new ArrayList();
               
                al.add(3);
                al.add("jacaa");               
                sop(al);               
        }
        public static void sop(Object obj){
                System.out.println(obj);
        }
}
al.add(3);
这里的3是不是装箱成了Integer对象?如果我想输出存储3的内存地址,可以吗?
作者: 坚强    时间: 2011-11-17 15:25
  是的,相当与 new Integer(3);
  输出地址方法我不知道为什么,但是可行
  1. import java.util.*;
  2. public class CollectionTest {
  3.         public static void main(String [] args){
  4.                 ArrayList al=new ArrayList();
  5.                
  6.                 al.add(new pp("3"));
  7.                 al.add(new pp("jacaa"));               
  8.                 System.out.println(al);         
  9.         }
  10.         public static void sop(Object obj){
  11.                 System.out.println(obj);
  12.         }
  13. }
  14. class pp
  15. {
  16.         private String name;
  17.         pp(String name)
  18.         {
  19.           this.name=name;
  20.         }
  21. }
复制代码
把对象封装,不封装会自动制表打印输出结果如下:

1.jpg (4.79 KB, 下载次数: 8)

1.jpg

2.jpg (5.32 KB, 下载次数: 7)

2.jpg

作者: 孙运强    时间: 2011-11-17 16:03
这就是关系到Integer的toString方法被重写了
public String toString() {
        return String.valueOf(value);
    }
hashCode方法也重写了,
  public int hashCode() {
        return value;
    }
你若想实现你的要看的结果,可以删掉这两个方法,但实验完后情该变过来
在eclipse中你应该会看他的源码把。
作者: quanhui    时间: 2011-11-17 17:58
我也觉得是封装了




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