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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 939676244 中级黑马   /  2013-9-16 21:21  /  2188 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-19 12:29 编辑

为什么第一个不可以,第二个就能运行呢?{:soso_e103:}

555.png (38.11 KB, 下载次数: 40)

555.png

6666.png (72.09 KB, 下载次数: 27)

6666.png

评分

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

查看全部评分

10 个回复

倒序浏览
亲  把代码贴出来吧  不要截图,看不清的。
回复 使用道具 举报
贴代码不是更容易么
回复 使用道具 举报
楼主  以后直接帖代码吧{:soso_e127:}

数组和集合类同是容器,有什么不同?
数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本类型数据,集合中只能存储对象。

评分

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

查看全部评分

回复 使用道具 举报
你好,我很想和你一起探究,但是我没有办法知道你的问题所在,因为图片太模糊了,可以加我一下QQ么
回复 使用道具 举报
QQ是:921638027
回复 使用道具 举报
集合ArrayList也是有限定的数据类型,它只能有一种数据类型。
当你存字符串时,它的默认类型就为String
当你存整数时,它的默认类型就为Integer
但同一集合中不能同时存两种或两种以上的数据类型

评分

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

查看全部评分

回复 使用道具 举报 0 1
  1. import java.util.ArrayList;


  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 ArrayList al = new ArrayList();
  6.                 al.add("java");
  7.                 al.add(4);
  8.                 System.out.println(al);
  9.         }

  10. }
复制代码
如果没有设置泛型的话,ArrayList是可以存储多种数据类型的噢

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
陶智第 发表于 2013-9-17 07:54
集合ArrayList也是有限定的数据类型,它只能有一种数据类型。
当你存字符串时,它的默认类型就为String
当 ...

回答的不太正确。如果通过正常加入是不行的。集合加了泛型就是进行了泛型限定,什么类型的对象才能加进来。编译时,编译器是会检查泛型的(所以报错),但是到了运行时期,泛型都是被去掉的。这就是所谓向前兼容的例子。因为如果要运行带泛型,java底层代码很多都得重写,工程量大得。。。,这在短时间内是不可能的(考虑到各大厂商的利益和需要付出的代价)。C++是带的。

这时候有反射(reflect)的概念,反射可以穿过编译期,通过获取字节码文件获得方法,invoke方法的调用,最终可以实现往泛型限定的集合里面添加不同类型的对象。
回复 使用道具 举报
楼主,第二个的while语句里面没有强转对象的动作,而第一个while语句里面有(String)(字符串)的动作,这明显就是把每一个集合中的对象迭代取出,然后进行字符串的特有操作。
但是,在第一个代码里面不仅添加了字符串,还添加了数字4,4自动提升为Integer类型。所以会发生ClassCastException。
提醒下:集合中添加的对象为Object类型。可以各种强转,但是各种强转只能是针对自己本类类型的对象。
回复 使用道具 举报
集合如果不指定泛型的话,是可以添加多种类型的。
  1. import java.util.*;
  2. import static java.lang.System.*;
  3. class  Test
  4. {
  5.     public static void main(String[] args) throws IOException
  6.         {
  7.                 ArrayList arr = new ArrayList();
  8.                 arr.add("zhang");
  9.                 arr.add("4");
  10.                 arr.add(new Integer(4));
  11.                
  12.                 Iterator it = arr.iterator();
  13.                 while(it.hasNext()){
  14.                         sop(it.next().toString());
  15.                 }
  16.     }
  17.        
  18.         public static void sop(String str){
  19.                 out.println(str);
  20.         }
  21. }
复制代码
这是木有错的啊,其实我也看不清图片上具体的问题。。。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马