我完全确信这是代码片段有错误。从头开始编程的Java中的Java说没有错误。这是代码:
ArrayList temp = new ArrayList();
temp.add("35");
temp.add(35);
第2行没有错误吗?一个arrayList不能有一个字符串和同一个ArrayList中的整数正确吗?如果我错了请纠正我,明天我会对此进行测试。提前谢谢大家!
答案 0 :(得分:4)
是的,这是正确的。
由于您未在ArrayList
中声明任何类型,因此它允许所有对象。
现在您的ArrayList与
相同ArrayList<Object> temp = new ArrayList<Object>();
见下面的例子
ArrayList<String> temp = new ArrayList<String>();
temp.add("35");
temp.add(35); //compiler error, Only Strings please
见下面的例子
ArrayList<Integer> temp = new ArrayList<Integer>();
temp.add("35");//compiler error, Only Integers please
temp.add(35);
使用Raw类型时非常气馁,总是喜欢使用特定类型。
现在在第一种情况ArrayList temp = new ArrayList();
中,当您返回时,它返回一个未知类型的Object。它可能是整数或字符串,您需要在从List
答案 1 :(得分:1)
它是正确的,因为它的原始类型意味着您可以添加任何对象。您可以添加扩展Object
类的任何内容
你可以写temp.add(x);
,其中x可以是任何东西String,int,long日期扩展的任何东西Object
例如
String x="";
int x1=1;
Date df=new Date();
temp.add(x);// will work
temp.add(x1);//will work
temp.add(df);// will work
答案 2 :(得分:1)
ArrayList temp = new ArrayList();
这里没有问题。这是一个ArrayList
,它将接受任何数据类型,因为它没有定义特定的数据类型(原始ArrayList)。
答案 3 :(得分:0)
这是对的。由于您尚未为列表声明任何类型,因此它将所有元素视为Object
类。你的定义是
ArrayList<Object> arr=new ArrayList<>();
用于编译器。在这种情况下,35将被装箱为Integer
,而“35”将为String
。 Integer
和String
都是Object
的子类,并且不会出现任何编译时错误。
答案 4 :(得分:0)
是的,您的数组列表可以包含String和整数。 但是数组列表只存储对象String和Integer对象它不支持int原始数据类型只有arraylist中的对象
ArrayList<Object> arr=new ArrayList<>();
String s="35";
Integer in=35;
arr.add(in);
arr.add(s);`
答案 5 :(得分:0)
在java中有一些名为Generics的东西,它允许程序员抽象出类型。
Arraylist代码在内部使用它。所以当你没有定义任何泛型类型时,默认类型是Object
类类型。
由于String
和Integer
都是Object类的子类,因此根据OOP允许此操作。