上面一个程序将集合中的元素取出来后进行了强制转换,这个意思我明白。但是下面那个程序也调用了ger()方法,怎么没有进行强制转换?麻烦再次解答下,不甚感激

解决方案 »

  1.   

    package com.shengsiyuan;import java.util.ArrayList;public class ArrayListTest2
    {
    public static void main(String[] args)
    {
    ArrayList list = new ArrayList();

    list.add("hello");
    list.add(new Integer(2));

    String str = (String)list.get(0);
    Integer in = (Integer)list.get(1);

    System.out.println(str);
    System.out.println(in.intValue());
    }
    }
    -----------------------------------------------------------------------------
    public class ArrayListTest5
    {
    public static void main(String[] args)
    {
    ArrayList list = new ArrayList();
    list.add(new Point(2, 3));
             list.add(new Point(2, 2));
            list.add(new Point(4, 4));
    for(int i = 0; i < list.size(); i++)
         {
    System.out.println(list.get(i));
                 }

    System.out.println(list);
    }
    }
    public class Point
    {
    int x;
    int y; 
    public Point(int x, int y)
    {
    this.x = x;
    this.y = y;
    }求各位朋友解答下,我是个新手,刚开始自学JAVA
      

  2.   

    集合拿出来个的对象是Object类型 你要使用的话必须强制转化下直接打印不用
      

  3.   

    这个2个段代码我看了一下,我一一给你解释一下
    在API中List的add方法是以一个Object存进去的
    如:list.add(Object);
    list.add("hello");这行代码是把字符串加到list里面了,取出的时候也要用String 去接受,如果用别的类型去接受,可能就会涉及到强转。
    list.add(new Integer(2));这行代码是把Integer类型加到list里面了,取出的时候也要用Integer 去接受,如果用别的类型去接受,可能就会涉及到强转。
    list.add(new Point(2, 3));
    list.add(new Point(2, 2));
    list.add(new Point(4, 4));这3行代码是将一个对象加入到List里面了,实际你也看不到他到底是什么值,本身Point构造方法也没返回什么值,所以结果会为:
    [tellhow.test.test.Point@c17164, tellhow.test.test.Point@1fb8ee3, tellhow.test.test.Point@61de33]
      

  4.   

    你是指这句没有强制转化吗?System.out.println(list.get(i));
    那是因为System.out.println这个方法可以接受一个Object类型的参数,JDK源码:public void println(Object x) {
            String s = String.valueOf(x);
            synchronized (this) {
                print(s);
                newLine();
            }
        }其实在以往List中维护的是一个Object类型的数组,所以当你从List获取到数据时都是Object类型的,所以如果你需要把它造型成之前你放入List当中的各种类型,然后才能操作。至从JDK1.5开始List已经采用泛型,所有你可以这样定义一个list, List<String> list = new ArrayList<String>();那么这个数组就只能存放String类型的数据了。而你从中取出来的数据也是String类型的了,无需在造型。
      

  5.   

    List<String> list = new ArrayList<String>() ;
    list.add("1") ;
    list.add("2") ;
    list.add("3") ;String str = list.get(2) ; //以上应该不需要如果 
    List list = new ArrayList() ;
    list.add("1") ;
    list.add("2") ;
    list.add("3") ;String str = (String)list.get(2) ; //应该需要