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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为我想要的去努 中级黑马   /  2013-12-25 21:54  /  1220 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.Iterator;


  4. public class CollectionDemo {
  5.    public static void main(String[] args) {
  6.         ArrayList c = new ArrayList();
  7.         c.add(1);
  8.         c.add(2);
  9.         int i = c.get(0);  //这里为什么编译报错?
  10. }
  11. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

5 个回复

倒序浏览
list中不能放基本数据类型,自动装箱成Integer  
回复 使用道具 举报
int i = c.get(0);
这里get(0)获取到的是Object对象,你把它赋值给int类型当然会报错的,
因为你上面赋值的是int类型,它默认做了装箱操作是Integer类型,所以你
像这样就没有问题了
int i = (Integer)c.get(0);

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
看清楚你的方法的返回值的类型?
明明是Object类型的,你用int类型来接收?
多看错误提示,都提示的很明白了。

---------- javac ----------
CollectionDemo.java:11: 错误: 不兼容的类型
        int i = c.get(0);  //这里为什么编译报错?
                     ^
  需要: int
  找到:    Object

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.Iterator;


  4. public class CollectionDemo {
  5.    public static void main(String[] args) {
  6.         ArrayList<Integer> c = new ArrayList<>();
  7.         c.add(1);
  8.         c.add(2);
  9.         Integer i = c.get(0);  //这里为什么编译报错?
  10. }
  11. }
复制代码


代码修改如上,因为get()方法返回的是引用类型,所以你的代码有错。kanAPI的时候要看清楚,返回类型是很重要的

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先,你先要搞清楚,集合能够操作的只能是对象,不能够操作基本数据类型的数据,
你这里c获取的是Integer对象,获取的是引用类型的数据,他能够赋值给基本数据类型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马