首页 > 解决方案 > 为什么包装器整数值和实际 int 值在变量查看器中显示不同(在 Netbeans 调试模式下)?

问题描述

几天前我学会了在 NetBeans 中使用调试模式。有一天,我在调试一个项目时看到包装器 Integer 的值为 4,而实际的 int 值为 5。这是一个变量调试器片段:

片段

为什么它们不同?我正在使用 NetBeans IDE 8.2。

[更新]

我创建了一个最小的可重现示例:

 Integer i = 3;
 i+= 1;

结果,int 值在第二行之后更新,而 Integer 值保持不变。我把它打印出来了,它是 4(正确的值)。但是为什么变量查看器中的整数没有更新?

标签: javadebuggingnetbeans

解决方案


因为一元加号 (+=) 运算符不适用于 Integer 对象,所以编译器会执行自动拆箱以执行所需的操作。在您的调试过程中,自动装箱尚未发生。

 Integer i = 3;
  i+= 1;

  System.out.println("Value of i = " + i + "  Data Type "+ i.getClass().getSimpleName());

上面显示的代码片段将为您提供以下输出

Value of i = 4,  Data Type: Integer

有关更多信息,您可以阅读文档

自动装箱和拆箱


推荐阅读