【问题标题】:return result of Deque pollFirst() in java [duplicate]java中Deque pollFirst()的返回结果[重复]
【发布时间】:2020-05-01 15:30:57
【问题描述】:

我正在编写一个算法问题,下面的代码无法通过大小写

public void pop() {
    if (s1.pollFirst() == minStack.peekFirst())
        minStack.pollFirst();
}

下面可以,

public void pop() {
    int tmp = s1.pollFirst() ;
    if (tmp == minStack.peekFirst())
        minStack.pollFirst();
}

唯一的区别是我如何使用 s1,pollFirst() 返回结果。我无法在这里弄清楚真正的区别。 谢谢

【问题讨论】:

标签: java deque


【解决方案1】:

使用==比较两个值小于-128或大于127的Integer对象将始终得到false。但是,如果您将Integer 与原始int 进行比较,如果实际值相同,它将为您提供true

        int n1=128;
        Integer n2=127;
        Integer n3=127;
        Integer n4=128;
        Integer n5=128;
        System.out.println(n1==n2); //false
        System.out.println(n2==n3); //true
        System.out.println(n4==n5); //false
        System.out.println(n1==n5); //true

在第二个示例中,您将值分配给原语int,因此它会自动取消装箱。

【讨论】:

  • 请添加标签
  • 它不会“总是”导致错误。 -128、127 范围之外的整数对象保证被缓存实例,但 Java 实现允许缓存该范围之外的值。重要的是它并不能保证,因此将 Integer 对象与== 进行比较通常是不安全的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2017-12-29
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多