关于ArrayList的疑问 arraylistjava 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、1和2都对,int和integer之间能够自动的进行封包和拆包,这是语言本身的特性2、3不行,是因为你的形参问题 把 public static void sum(ArrayList list) 改成 public static void sum(ArrayList<Integer> list) 就可以了 3的话,编译器根本不知道list里存的是什么,它只知道是一个object,那么肯定不会有intValue这个方法 形参没有用泛型。如果形参不用泛型,可以强制类型转换。private static void sum(ArrayList test) { int k=((Integer) test.get(0)).intValue(); System.out.println(k);} 那我不用泛型也报错,是不是在sum方法中要用强制类型转换 是不是只要形参中不指定泛型,传过来的就是Object? 不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。 不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。是不是API文档中,方法前面返回值是E这种泛型的 方法,调用的时候返回的都是Object 我理解其传过来的实际上是Integer(否则强制类型转换运行时会报异常),但是这个时候编译器并不知道具体的类型,它当成的是一个Object 类型不一致,sum(ArrayList list) 方法 中的参数list其中的元素默认的类型为Object,你下面求的是Int类型的肯定不行的,如果你使用泛型的话,类型不一致的问题就能解决。。 public static void sum(ArrayList list) { int i = list.get(0).intValue(); //3 System.out.println(i); } list.get(0)返回的是个Object类型 可以这样改 Object i = list.get(0); //3 就OK啦 另外一种改法 public static void sum(ArrayList<Integer> list) { int i = list.get(0); //3 System.out.println(i); } 从1.5开始Java支持自动拆箱,装箱操作ArrayList list:可以存入任何类型的数据,默认是ObjectArrayList<Integer> list:只能存入int/Integer类型的数据,使用了泛型,表明只能存入该种类型数据 都不用泛型的情况下,你要在sum方法中做强转 都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的 方法,不指定的话调用的时候返回的都是Object 都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的 方法,不指定的话调用的时候返回的都是Object可以这么理解 都不用泛型的情况下,你要在sum方法中做强转是不是API文档中,方法前面返回值是E这种泛型的 方法,不指定的话调用的时候返回的都是Object可以这么理解太感谢了 到底哪里出错,只能显示框架不能显示菜单栏 有什么办法可以使得BufferReader读得更快一些?谢谢 前辈们给点意见把 关于数组的问题 还是数据库,前辈高手指点迷津啊(只有10分了) 怎样做全文搜索?有这方面的资料吗? 在线等待:down 了个cloudscape却不知道下一步怎么办? 先谢了!恳请高人指点:如何迅速学习java,推荐好书或Web. 错误: 程序包不存在 大学刚接触java,期末编写一个亲戚计算器,求指教 有关ArrayList遍历的问题 关于java.lang.ClassNotFoundException的mysql数据库连接程序
2、3不行,是因为你的形参问题
把 public static void sum(ArrayList list) 改成 public static void sum(ArrayList<Integer> list) 就可以了
如果形参不用泛型,可以强制类型转换。private static void sum(ArrayList test) {
int k=((Integer) test.get(0)).intValue();
System.out.println(k);
}
不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。
不用泛型的话,get方法返回的是Object,那你说Object类型你调用intValue会不会报错。是不是API文档中,方法前面返回值是E这种泛型的 方法,调用的时候返回的都是Object
int i = list.get(0).intValue(); //3
System.out.println(i);
} list.get(0)返回的是个Object类型
可以这样改
Object i = list.get(0); //3
就OK啦
public static void sum(ArrayList<Integer> list) {
int i = list.get(0); //3
System.out.println(i);
}
ArrayList list:可以存入任何类型的数据,默认是Object
ArrayList<Integer> list:只能存入int/Integer类型的数据,使用了泛型,表明只能存入该种类型数据
可以这么理解
可以这么理解太感谢了