我应该将Integer转换为int吗?

时间:2018-02-25 14:17:16

标签: java

我已经阅读过将Integer转换为int的线程,但我遇到了这个问题。我的代码是:

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String numberOne = "12";

String numberTwo = "45";

Integer myint1 = Integer.valueOf(numberOne);

Integer myint2 = Integer.valueOf(numberTwo);

int sum = myint1.intValue() + myint2.intValue(); //line6

System.out.print(sum);

它给了我一个关于第6行不必要拆箱的警告,并建议我改为:

int sum = myint1 + myint2; //newline6

这两个版画给了我相同的结果。是不是必须在第6行将Integer转换为int?

2 个答案:

答案 0 :(得分:11)

编译器会自动为你做同样的拆箱(从JDK 5开始),所以

int sum = myint1.intValue() + myint2.intValue();

有点多余

int sum = myint1 + myint2;

会有相同的行为。

也就是说,您可以将String直接解析为int,并避免装箱和取消装箱:

int myint1 = Integer.parseInt(numberOne);
int myint2 = Integer.parseInt(numberTwo);
int sum = myint1 + myint2;

答案 1 :(得分:4)

没必要。

根据jls,当您将Integer放在int之外时,+会自动取消装箱到layoutSubviews

  

数字上下文适用于算术运算符的操作数。

     

数字上下文允许使用:

     
      
  • 拆箱转换(第5.1.8节)
  •