我尝试了一个代码
double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here
发生的错误如下
二元运算符“+”的错误操作数类型
第一种:双
第二种:对象
我应该怎么做才能在列表中添加 temp 值和 double 值?
我喜欢的编程语言是 Java。
我尝试了一个代码
double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here
发生的错误如下
二元运算符“+”的错误操作数类型
第一种:双
第二种:对象
我应该怎么做才能在列表中添加 temp 值和 double 值?
我喜欢的编程语言是 Java。
您需要使用原始包装类 Double。
List<Double> list=new ArrayList<Double>();
list.add(new Double(1.1));
在. _ Generic type_ Collections_ List_ArrayListJava 1.5+
当您使用raw typeList 时,该方法List.get(0)将始终为您提供Object类型,您需要进行一些转换才能使其工作。
因此,您可以Double在当前代码中添加强制转换,这绝对是个坏主意。
或者,您应该使用generic如下的 List 版本:-
List<Double> list=new ArrayList<Double>();
list.add(1.1);
注意,值为1.1a double,仍然可以直接添加,无需转换为Double。这是因为Java被调用的特性Auto Boxing。
在 Java 中,当您将double值存储在Double引用中时,该double值会自动装箱到Double. 而在相反的情况下,它被称为Unboxing,即 from Doubleto double。
这就是为什么,当你这样做时: -
temp+=list.get(0);
的值list.get(0)是类型Double。并且由于您正在执行double原始类型的操作,因此该 vlaue 自动boxed为double,并执行加法操作。
当您未定义通用类型时。该列表将返回一个对象。这意味着您需要强制转换它:
temp+=(Double) list.get(0);
虽然直接在列表的声明中定义泛型类型更容易:
List<Double> list=new ArrayList();
附带说明:
您需要使用Double而不是double为此工作。因为double是原始类型Double而是列表可以存储的java对象