【问题标题】:Integer.MAX_VALUE in javaJava 中的 Integer.MAX_VALUE
【发布时间】:2016-01-19 07:32:04
【问题描述】:

我已经阅读了关于 MAX_VALUE 的内容,发现一个常量可以容纳 2^31-1 的最大值。任何程序都需要在哪里使用 MAX_VALUE?

我也对这段堆栈代码感到困惑,如果堆栈为空,它将返回 Integer.Max_VALUE。

if(s2.isEmpty())
    return Integer.MAX_VALUE; 

栈为空时为什么要返回一个最大值?

【问题讨论】:

  • 您可能需要它来检查整数加法是否会导致溢出。如果您想在 int 数组中找到最大值和最小值,它也是一个不错的初始化器
  • 你不能检查一下这个返回值在代码中是如何使用的吗?为什么需要猜测?

标签: java data-structures stack


【解决方案1】:

MAX_VALUE的用法示例:

List<Integer> l = Arrays.asList(1, 2, 182938, 1293);
Integer min = Integer.MAX_VALUE;

for (Integer i : l) { 
     min = Math.min(min, i);
}

【讨论】:

    【解决方案2】:

    说实话,我几乎没用过,但一方面它很实用:

    如果您正在搜索最小值,您可以从Integer.MAX_VALUE 开始,因为它保证下一个值会更小。

    第二个用例场景是通过预先检查(var &lt;= Integer.MAX_VALUE - valueToAdd &amp;&amp; valueToAdd &gt;= 0)来检查此变量是否可用于任何进一步的计算。

    返回Integer.MAX_VALUE 很好,如果您确实知道一个数字不可能那么高。如果 int 不能为负数,我经常使用 -1 作为返回值,但如果可以的话,您需要考虑其他内容,那就是使用 MAX_VALUE

    【讨论】:

    • 我想补充一点,valueToAdd 绝对应该是 &gt;= 0,否则这个条件可能为真,仍然会造成溢出。
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 2013-03-14
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多