自动拳击与静态数字

Loc*_*han 4 java performance boxing coding-style

使用Integer i = NumberUtils.INTEGER_ONE而不是Integer i = 1?我不知道自动拳击背后会发生什么.

谢谢

Jon*_*eet 9

基本上它将被编译成:

Integer i = Integer.valueOf(NumberUtils.INTEGER_ONE);
Run Code Online (Sandbox Code Playgroud)

假设INTEGER_ONE被声明为int.

在执行时,假设INTEGER_ONE的值为1,实际上每次都会返回对同一对象的引用,由Java语言规范保证,因为它在-128到127的范围内.超出该范围的值可以返回对该范围的引用.相同的对象,但不必.