java - 为什么包装器整数值和实际 int 值在变量查看器中显示不同(在 Netbeans 调试模式下)?
问题描述
几天前我学会了在 NetBeans 中使用调试模式。有一天,我在调试一个项目时看到包装器 Integer 的值为 4,而实际的 int 值为 5。这是一个变量调试器片段:
为什么它们不同?我正在使用 NetBeans IDE 8.2。
[更新]
我创建了一个最小的可重现示例:
Integer i = 3;
i+= 1;
结果,int 值在第二行之后更新,而 Integer 值保持不变。我把它打印出来了,它是 4(正确的值)。但是为什么变量查看器中的整数没有更新?
解决方案
因为一元加号 (+=) 运算符不适用于 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
有关更多信息,您可以阅读文档
推荐阅读
- sql-server - 使用 XML 源和内联架构运行 SSIS 数据流任务时,未读取任何内容
- c++ - 包括来自 boost 1.73.0 的 read_graphviz_new.cpp 不编译
- python - 如何从 Python 中的插值网格中提取 (x,y,z) 值
- django - 在django中,我想在成功提交出勤后一一删除员工姓名
- arrays - 转换列表
列出 - php - 错误 session_start(): 读取会话数据失败: redis PHP / Redis
- javascript - 异步 / 等待 socket.io
- apache-spark - 在 Spark 中对 Logistic 回归模型代码进行评分
- javascript - 将 Map 实例拆分为两个单独的数组
- angular - 使用 combineLatest 订阅 valueChanges