1.文字列の==とequal()
文字列の等価判定では、==でアドレスが同じかどうかを判定し、equal()で文字値が同じかどうかを判定します。ほとんどの場合、== と equal() の結果は同じです。これは、String オブジェクトが不変モードであるためです。新しい String オブジェクトを明示的に作成しない場合、Java のデフォルトでは、新しく生成された String オブジェクトがバッファーに格納され、バッファーが変更されるかどうかが毎回決定されます。このオブジェクトがすでに存在する場合、後で作成される同じ文字値を持つ String オブジェクトも、その文字値オブジェクトが最初に作成されたアドレスを指すことになります。つまり、性格値が同じであれば、地質も同じであることが多い。 == は、equal() と同じ効果があります。ただし、オブジェクトが str = "abc" として直接割り当てられるのではなく str = new String("abc") によって生成される場合、または何らかの文字列接続処理の後、または StringBuffer などのオブジェクトを通じて生成される場合、新しいオブジェクトはアドレスの場合、現時点では == と equal() の結果は異なります。
少し複雑ですか?ここでは、メモリ、スタック、オブジェクト ストレージについてある程度の理解が必要です。この問題については触れたくありません。理解できない場合は、2 つの文字列の文字値が等しいかどうかを判断したい場合で、他に要件がない場合は == の代わりに equal() を使用してください。 ==, 必要なときに自然と理解できるようになると思います。実際、文字列の判定では == を使用する必要はほとんどありません。
2. str.equal("abc") と "abc".equal(str) について
これについては多くの議論があるようですが、最初の定数を最後に書くのは、ほとんどの人の習慣や論理的思考と一致するかもしれません。ただし、str が null かどうかを判断するには、もう 1 つの判断が必要です。そうしないと、ここで例外が発生する可能性があります。後者の書き方では、null かどうかをさらに判断する必要はありません。私の個人的な好みに関する限り、私は後者の書き方を好みます。
3. Stringのnullについて
/**
* Javaの文字列がnullの場合のテスト
* 作成日:2009-6-3
* 著者:管理者
*
*/
public static void testNull(){
文字列 a = null、b = null、c = "へへ";
System.out.println(a == null);
System.out.println(a+b+c);
}
メソッドの実行結果:
真実
nullnull (笑) したがって、文字列のマージ操作を実行するときは、皆さんも注意を払う必要があります。null のチェックを忘れないでください。そうしないと、満足のいく結果が得られません。