刷算法时遇到的:stack明明为空 ,但是 stack==null
为false,stack.isEmpty()
却是true
在这里记录一下为什么
做实验查看结果
Stack<Integer> stack = new Stack<>();
System.out.println(stack == null);
System.out.println(stack.isEmpty());
运行结果如下:
isEmpty()看源码
isEmpty()方法:如果stack的大小为0 为true;否则false
public synchronized boolean isEmpty() {
return elementCount == 0;
}
stack==null
stack==null
:stack为引用类型。"=="操作符比较的是对象的引用,而不是对象的内容。
对于stack来说,初始化赋值给了 stack 变量。这意味着 stack 引用了一个新创建的 Stack 对象,stack 不再是 null。
"null"表示一个空值或空引用,意味着该变量不引用任何对象。
因此为false。