黑马程序员技术交流社区

标题: 求助,关于String与Integer在往集合中add的问题,如下: [打印本页]

作者: 潜伏    时间: 2013-11-20 10:05
标题: 求助,关于String与Integer在往集合中add的问题,如下:
ArrayList q=new ArrayList();
q.add("ang");
q.add(23);
今天毕老师说在传入23时候其实有个自动装箱的过程。就是添加一个new Integer(23)
问题有两个:
1,集合中必须传入的是对象????今天毕老师一笔带过了
2,如果是传入对象的话那么字符串是不是也要变成对象,那么岂不是也要new String(“ang“)???
谢谢
作者: ∏艾力克斯※    时间: 2013-11-20 10:14
我们先来看下ArrayList的add方法
add(Object obj) 即要求参数为Object类型
那么,add(23)时,发生了什么呢?
这里有一个装箱的过程
  1. public static Integer valueOf(int i) {
  2.         final int offset = 128;
  3.         if (i >= -128 && i <= 127) { // must cache
  4.             return IntegerCache.cache[i + offset];
  5.         }
  6.         return new Integer(i);
  7.     }
复制代码
所以问题1的答案:集合中只能放对象,如果放入基本数据类型,将会自动装箱并放入集合中。
继续:
因为String本身不是基本数据类型,是引用数据类型,所以无需装箱,可以直接放入集合中,
所以问题2的答案:无需new  String();

作者: 黄炳期    时间: 2013-11-20 17:04
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html




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