gpt4 book ai didi

java - if、else if、else 中的调试器行为

转载 作者:行者123 更新时间:2023-11-30 11:47:39 25 4
gpt4 key购买 nike

我们有一个在 Weblogic 应用程序服务器 11 上运行的 Java 6 应用程序。我正在尝试调试一个问题。我的代码是

if(a==0){
//Do A
}
else if(a==1){
// Do B
}
else{
// do C
}

我的问题是,即使我的 if block 为真并且执行了第 2 行,调试器仍然会转到 else block 中的第 8 行。我的机器和服务器上的代码是同步的,所以没有不匹配。请帮我找出我的代码可能有什么问题。

最佳答案

我们需要知道 //Do C 的作用。

如果有赋值:

if (a == 0) {
b = 1;
} else if (a == 1) {
b = 0;
}
else {
b = null;
}

一些编译器所做的典型优化是:

b = null;
if (a == 0) {
b = 1;
} else if (a == 1) {
b = 0;
}

这就是执行的字节码。如果代码由 JIT 编译器编译为本地代码,则更不用说了。因此,根据您的调试客户端和 jdk,您可能会看到疯狂的当前指令行。但只要 block 末尾的状态是预期的就没问题。

有时执行需要关闭语句。就这样结束了。

确保没有 static 值分配给 a,如果是,则重新编译。静态的分配在编译时链接。

关于java - if、else if、else 中的调试器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com