List<Integer> stack1 = new ArrayList<>();
List<Integer> stack2 = new ArrayList<>();

//some add operation
......
//some add operation

if(stack1.remove(index1) == stack2.get(index2-1))
  stack2.remove(--index2);


上面的代码无法正常工作。
 虽然下面的代码正常工作。

List<Integer> stack1 = new ArrayList<>();
List<Integer> stack2 = new ArrayList<>();

//some add operation
......
//some add operation

int i = stack1.remove(index1);
int j = stack2.get(index2-1);

if(i == j)
  stack2.remove(--index2);


前一个代码的工作原理是,即使后一个代码中的'if'语句判断为是,它也会判断为false,这使我感到困惑。

最佳答案

堆栈元素是Integer对象。在第一种情况下,您比较它们的身份,在第二种情况下,您比较值。

尝试这个

if(stack1.remove(index1).equals(stack2.get(index2-1)))

关于java - Java中的“if”语法如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27075208/

10-09 12:50