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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ArrayList q=new ArrayList();
q.add("ang");
q.add(23);
今天毕老师说在传入23时候其实有个自动装箱的过程。就是添加一个new Integer(23)
问题有两个:
1,集合中必须传入的是对象????今天毕老师一笔带过了
2,如果是传入对象的话那么字符串是不是也要变成对象,那么岂不是也要new String(“ang“)???
谢谢

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 淡定

查看全部评分

2 个回复

倒序浏览
我们先来看下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();

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马