写leetcode题目时遇到一个问题,题目中用到两个栈,需要判断当两个栈的栈顶元素相等时从这两个栈中都弹出这个值,我做的时候一直遇到错误,debug时发现stack1.peek() == stack2.peek()这个表达式一直是错误的,哪怕栈顶元素的值是一样的。
其实这里需要区分int和Integer了,Integer不是基本数据类型而是对象,java中"=="是判断对象在内存中的位置的,而创建栈时,
Stack<Integer> stack = new Stack<>();栈中元素是Integer对象,peek()函数返回的不是值而是栈顶元素,自然也就是Integer对象,那么两个对象用"=="来判断肯定是不对的,正确的做法是用Integer对象的compareTo()方法。