gpt4 book ai didi

java - 为什么 Byte.compare() 和 Integer.compare() 的实现方式不同?

转载 作者:IT老高 更新时间:2023-10-28 20:45:26 24 4
gpt4 key购买 nike

我正在研究OpenJDK的源码。

Byte.compare()Integer.compare() 方法吸引了我的注意力:

public static int Byte.compare(byte x, byte y) {
return x-y;
}

public static int Integer.compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

为什么Byte.compare()Integer.compare()方法有不同的实现方式?

最佳答案

Integer.compare 的实现不使用减法,因为如果将接近 Integer.MIN_VALUE 的整数与另一个接近 Integer.MAX_VALUE

Byte.compare 的情况下不会发生这种溢出,因为在计算 x-y 之前字节值已隐式转换为整数。

(另见:Java Language Specification - 5.6.2 Binary Numeric Promotion)

关于java - 为什么 Byte.compare() 和 Integer.compare() 的实现方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924044/

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