検索

ホームページ  >  に質問  >  本文

Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?

if(id!=null&&id!="")
代码中经常这样写,空字符串跟null 都不用equals吗?

大家讲道理大家讲道理2890日前530

全員に返信(8)返信します

  • 高洛峰

    高洛峰2017-04-17 17:53:37

    まず、id!=""の書き方が間違っています、!id.equals("")と書くべきです。
    次に、==equals

    の意味を理解する必要があります。
    1. == は、2 つのオブジェクトが同じオブジェクトへの参照であることを意味します。==null は、このオブジェクトがインスタンス オブジェクトへの参照ではなく、オブジェクトが空であることを意味します。

    2. equals は String クラスのメソッドで、2 つの文字列の内容が同じであることを示します。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    いつもこのように書かれているのですが、なぜですか?

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    空の文字列には実際には等しい値が必要です。そうでない場合はエラーが発生します。 null も使用できます!=

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    次のコード、結果は false

    リーリー

    したがって、空の文字列を決定するには、

    などの等号を使用する必要があります。 リーリー

    または、長さを使用して

    などの CharSequence を決定し、展開します。 リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:53:37

    1. equals() クラスには、ObjectInteger などのすべてのパッケージ化クラスがこの関数を再実装しています。 classquals() メソッドの場合、このメソッドの効果は「==」と同等であり、2 つのクラスのオブジェクト参照が同じであるかどうかが判断され、ラッパー クラス Long では、オブジェクトは等しいです。 equals2. 判定が
    として記述されている場合、id の値が null の場合、if(id.equals("")&&id!=null) メソッドの呼び出しを削除すると例外がスローされます。 equals()

    3.

    上記のプログラムを説明します

    比較するのは、2 つの参照が同じかどうかです。str1 == str2 の場合、abc は定数プールに格納されます。 > は、まず定数プールに文字列 str1 があるかどうかを確認します。存在する場合は、それが直接参照されます。 str2 は新しいオブジェクトを直接作成するため、アドレスは str1 とは異なる必要があります。では、なぜ str3 メソッドを使用した後も同じなのでしょうか? abc intern メソッドが呼び出されたとき、この String オブジェクトと等しい文字列がプールに既に含まれている場合、この時点でプール内の文字列が返されます。時間が経過すると、新しい文字列は生成されなくなります。定数プール内の文字列は参照されたままであるため、
    の戻り値は intern のままです。 str2.intern() == str1 trueそれだけです。 (●'◡'●)

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 17:53:37

    id==null は、参照 ID がオブジェクトを指しておらず、単なる参照であることを意味します。Java の特定のオブジェクトのみがメソッドを呼び出すことができます (ここでは equals())。したがって、id==nullequals() をスローするときに NullPointerException を呼び出すことになります。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    このコードは間違って書かれています。空の文字列を比較するために等号を使用していません。タブやキャリッジリターンなどの空の文字列がたくさんあります。チェックできる既製の関数がたくさんあります。 Apache Commons の StingUtils などで使用される .isBlank メソッドと Guava の Strings.isNullOrEmpty メソッドはどちらも、null 文字列と空白文字列のステータスを判断できます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    == と等しい、"" と null の違いは、値が等しいかどうか、または参照型のアドレスが等しいかどうかを比較することを理解する必要があります。 >equals は参照型アドレスの値、つまり内容が等しいかどうかを比較します

    返事
    0
  • キャンセル返事