当前位置: 首页 > 面试题库 >

带原语的compareTo->整数/整数

淳于功
2023-03-14
问题内容

更好写吗

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

要么

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;

要么

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.

您不会比这更快。



 类似资料:
  • 主要内容:哪些情况下使用 int 和 uintGo语言的数值类型分为以下几种:整数、浮点数、复数,其中每一种都包含了不同大小的数值类型,例如有符号整数包含 int8、int16、int32、int64 等,每种数值类型都决定了对应的大小范围和是否支持正负符号。本节我们主要介绍一下整数类型。 Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、1

  • null 例如。添加(0,2),(0,1),(3,4),(6,8)将返回(0,4),(6,8)check(2,4)-true check(3,8)-false,因为4和6之间有一个间隙。 如何修改下面的代码,例如set和list将包含基元而不是对象? 编辑:我知道java泛型不能是一个原语,所以列表是不可能的。我的动机来自于其他数据结构的实现。 例如hashmap 与android SparseA

  • 描述: 建立一个基于SpringMVC的JavaEE项目 运行该项目,效果良好。 添加Hibernate4框架库支持 问题,异常 1)在我将“data source”bean添加到SpringMVC配置文件后,它总是在启动时抛出。 ServletContext资源[/WEB-INF/dispatcher servlet.XML]的XML文档中的第45行无效;嵌套的异常是org.xml.sax。SA

  • 本文向大家介绍如何将整数转换为用R语言写的整数?,包括了如何将整数转换为用R语言写的整数?的使用技巧和注意事项,需要的朋友参考一下 如果我们有数字,那么我们可能希望将这些数字转换为单词。例如,将1转换为1。如果我们有文本数据并且数字是文本的一部分,则可能需要这样做。因此,最好以文本形式表示数字,以使文本保持一致。这可以通过使用replace_number函数qdap软件包来完成。 安装和加载qda

  • 问题内容: 即使我们有一个整数对象(例如Integer),为什么整数(int)仍具有原始类型?但是对于String类型则不一样。String没有这种原始类型。始终使用String处理对象引用吗? 问题答案: 速度。对于机器代码而言,使用本机CPU指令添加两个int的速度要快得多,而不是必须获取两个Integer对象,从它们中提取int值然后相加的结果,从而创建一个新的结果Integer对象以包含结

  • 有人解释一下为什么吗?多谢了。 *注意:在运行函数中。如果我使用System.out.println(next);有时我也会看到一些丢失的测序器。* 示例输出1: