文字列型の等号の標準文言について

書き込みは、今日、私は突然、今はnullポインタエラー、それを復元する場面に遭遇したと等しいです。

その時の比較の値は、オブジェクトのプロパティが「1」に等しいかどうかを決定します

(Object.get(値))。等号( "1")

書き込み動作後に、コード・パケットが突然すぐにこのオブジェクトがヌルでない反応、ヌル・ポインタ例外を発見し、この方法は、文字列コースヌルポインタを呼び出し、そうすぐに先行三眼決意したかったです。

((Object.get(値))== NULL?「」:( Object.get(値))。等号( "1")

書き込みがライン上にない、そして最終的に変更することを実現し、コードを見て、これはあまりにも愚か、右で、ラジカルターンを終えました

"1" .equals(Object.get(値))

この方法は、対等のヌル呼び出しの成功を回避したが、その後、再び、私は一種の状況の内部パスヌルが発生します、ノーコードのテストシステムはより多くの成功した、それはこのメソッドはnullパラメータを渡すことができ表しなり、影響はありません等しいものを、と思いました調べるために、コード、オープンソースコードとのためのI側を使用して、次のように対等の源です。

public boolean equals(Object var1) {
        if (this == var1) {
            return true;
        } else {
            if (var1 instanceof String) {
                String var2 = (String)var1;
                int var3 = this.count;
                if (var3 == var2.count) {
                    char[] var4 = this.value;
                    char[] var5 = var2.value;
                    int var6 = this.offset;
                    int var7 = var2.offset;

                    do {
                        if (var3-- == 0) {
                            return true;
                        }
                    } while(var4[var6++] == var5[var7++]);

                    return false;
                }
            }

            return false;
        }
    }

私たちは、あなたが、彼は最初のヌル== nullを実行しますで、ヌルを渡し、彼が最初に呼び出す数が==自体を比較することがわかります。

ヌル== nullの場合、何?そのロングコードのためのプレイは、私はこのような状況の比較プレイしたことがない、側面を実行するために待つことができない、ヌル== nullを発見し、彼女は真を返し、これは私がちょうどヌルを通過した疑問を解決します。

だから、ヌル== nullのに加えて、ヌルは、それの何か特徴はありますか?

あらゆるタイプの1.nullない部分は、任意の型に変換することができますが、instanceofはと常にfalseを返します。
決して2.nullと、このような代入演算子、コンパイラエラーかどうか、などの8つの基本データ型がエラーを実行することです。
3.null缶そして、文字列操作(例えば+ NULL "S" = "NULLS"など)
ヌル4.同じタイプ、比較trueを返し、ヌル== nullがtrueを返します。

まあ、equalsメソッドをバックにヌルを読み、後に、彼はその後、アレイ、比較するための文字、メンバ変数がコンストラクタ0を与えられたことにより、初期化されるよう、時間オフセット] [文字列が文字に分割されていることが分かりました。

原理は、イコールを呼び出すようにするとき覚えやすいだろうな方法ですが、それは定数、括弧内の変数を呼び出すことが最善です。

公開された27元の記事 ウォンの賞賛1 ビュー3655

おすすめ

転載: blog.csdn.net/qq_40111437/article/details/83185674