与基元进行比较 -> Integer / int

2023-11-29

是不是写得比较好

int primitive1 = 3, primitive2 = 4;
Integer a = new Integer(primitive1);
Integer b = new Integer(primitive2);
int compare = a.compareTo(b);

or

int primitive1 = 3, primitive2 = 4;
int compare = (primitive1 > primitive2) ? 1 : 0;
if(compare == 0){
    compare = (primitive1 == primitive2) ? 0 : -1;
}

我认为第二个更好,应该更快并且对内存进行了更多优化。但他们不是平等的吗?


为了提高性能,通常最好使代码尽可能简单明了,这通常会表现良好(因为 JIT 会最好地优化此代码)。就您而言,最简单的示例也可能是最快的。


我会做任何一个

int cmp = a > b ? +1 : a < b ? -1 : 0;

或更长的版本

int cmp;
if (a > b)
   cmp = +1;
else if (a < b)
   cmp = -1;
else
   cmp = 0;

or

int cmp = Integer.compare(a, b); // in Java 7
int cmp = Double.compare(a, b); // before Java 7

如果不需要,最好不要创建对象。

就性能而言,第一个是最好的。

如果您确定不会出现溢出,则可以使用

int cmp = a - b; // if you know there wont be an overflow.

你不会比这更快了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与基元进行比较 -> Integer / int 的相关文章

随机推荐