gpt4 book ai didi

Java Compiled While 循环看起来不同

转载 作者:行者123 更新时间:2023-12-02 00:29:44 25 4
gpt4 key购买 nike

我正在使用 java 7 update 26。我有一个类,其中有一个 while 循环。当我使用 jd-gui ( http://java.decompiler.free.fr/?q=jdgui ) 反编译该 .class 文件时,它给了我一些奇怪的 while 循环。

try {
while (true) {
c = in.read();
if ((c >= '0' && c <= '9') || c == '-' || c == '+')
{
numBuf[len++] = (char) c;
} else if (c == '.' || c == 'e' || c == 'E') {
numBuf[len++] = (char) c;
isFloat = true;
} else if (c == -1) {
throw new IOException("EOF");
} else {
in.unread(c);
}
}
} catch (ArrayIndexOutOfBoundsException e) {
throw new IOException("Exception with Array ");
}

编译后的版本如下:

try {
while (true) {
c = in.read();
if (((c >= 48) && (c <= 57)) || (c == 45) || (c == 43))
{
numBuf[(len++)] = (char)c;
continue;
}
if ((c != 46) && (c != 101) && (c != 69))
break;
numBuf[(len++)] = (char)c;
isFloat = true;
}
if (c == -1) {
throw new IOException("EOF");
}
in.unread(c);
} catch (ArrayIndexOutOfBoundsException localArrayIndexOutOfBoundsException) {
throw new IOException("Exception with Array ");
}

我的代码看起来完全不同..有什么想法吗?

最佳答案

将“X”替换为 ASCII 代码以提高性能。

并且将 if/else 更改为 continue/break 以减少比较,仍然是为了性能。

关于Java Compiled While 循环看起来不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18458583/

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