if(s1.peek()==s2.peek()) 即使两个值相等也无法执行?

刷leetcode时候,想判断两个栈,栈顶顶峰值是否相等地时候。第一次采用了

 s1.peek()==s2.peek();

执行不通过时候,疯狂地找思维逻辑漏洞,但是还是没找出,不断地调试,发现尽管值相等都无法执行里面地语句。
然后换了另一种方式表达

 int value = s1.peek();
 if(value == s2.peek());

然而却成功通过了。what?求解答,谢谢

通过定义public Object peek()可以看出,peek()返回的是对象,对象不存在相等的概念,所以不能用==符号,
而int不是对象,是变量值的概念,值可以使用==进行比较,
值和对象间的转换涉及到装箱拆箱的动作,由程序自动完成,感兴趣可以去了解下。

你创建栈的时候是不是没指定泛型 (元素类型)
所以object == 判地址
但是你第二次用了int 会进行自动拆箱的判 = 所以就通过了
求分 嘿嘿