java - .equals()方法和==相等判断有什么区别?Leetcode 155中的问题
大家讲道理
大家讲道理 2017-04-18 10:25:18
0
3
630

本题是实现stack相关内容。
最早的时候写的代码如下,加粗部分的判断用==连接,

if(minstack.peek()==(stack.peek())

但是结果不正确,报告如下

Input:
["MinStack","push","push","push","push","pop","getMin","pop","getMin","pop","getMin"]
[[],[512],[-1024],[-1024],[512],[],[],[],[],[],[]]
Output:
["constructor","null","null","null","null","null","-1024","null","-1024","null","-1024"]
Expected:
["constructor","null","null","null","null","null","-1024","null","-1024","null","512"]

之后将加粗部分改为:

if(minstack.peek().equals(stack.peek()))

使用equals()连接,答案就是正确的了。

新人入码坑,求老师们指点一二这是为何?

另:这个结果报告是怎么看的,有点看不懂,是和二叉树有关的写法?求各位前辈指教!

谢谢!

附源码如下:

public class MinStack {
    Stack<Integer> minstack = new Stack<Integer>();
    Stack<Integer> stack = new Stack<Integer>();
   
    public MinStack() {     
    }
    
    public void push(int x) {
        if(minstack.empty() || x <= minstack.peek())
            minstack.push(x);
        stack.push(x);
    }
    public void pop() {
        **if(minstack.peek()==(stack.peek()))**
            minstack.pop();
        stack.pop();
    }
    public int top() {
        return stack.peek();   
    }
    public int getMin(){
        return minstack.peek();  
    }
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(3)
洪涛

実装にはスタックを使い、判定には==を使いたいので、二つのスタックに追加されるオブジェクトが同じになるようにpush時に制御する必要があります。

リーリー
いいねを押す +0
大家讲道理

== は参照を比較し、equals は値を比較します。

いいねを押す +0
PHPzhong

== は、2 つの文字列によって参照されるアドレスが同じかどうか、つまり、同じオブジェクトを指しているかどうかを比較するのに対し、equals メソッドは文字列の内容が同じかどうかを比較します。
例えば

リーリー

a == b は true を返し、a.equals(b) も true を返します。
プログラムは実行中に文字列プールを持っているため、文字列を作成するときに、対応する文字列がプール内に存在するかどうかを最初に確認します。存在しない場合は、その文字列への参照を指定するだけです。 1つ。
上記の例では、a が作成されると、文字列プールに最初に「abc」が作成され、次に b が作成されるときに a がそれを指します。「abc」はすでに存在するため、b はそれを直接指すことができます。
次のように変更された場合:

リーリー

その後、a == b は false を返し、a.equals(b) は true を返します。 bを作成すると「abc」の有無に関わらず新たに「abc」が作成されるため、aとbが指すキャラ作成オブジェクトが異なるため、falseが返されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!