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/