• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:空の文字列とnullと"")

空の文字列とnullと""の関係について

このQ&Aのポイント
  • 空の文字列とnullと""の関係について説明します。空の文字列は文字数が0である文字列を指し、""は空の文字列の表現方法の一つです。一方、nullは値が存在しないことを表す特殊な値です。つまり、""とnullは異なる概念です。TextFieldなどの要素に対して、tf.getText()==""かtf.getText()==nullで判定することはできますが、tf.getText().length()==0と比較する方法も使用できます。
  • 空の文字列とは、文字数が0である文字列を指します。空の文字列は""と表現されることが一般的ですが、""以外の表現方法も存在します。一方、nullは、値が存在しないことを表す特殊な値です。つまり、空の文字列とnullは異なる概念です。
  • 空の文字列とは、文字数が0である文字列を指します。一般的には、空の文字列は""と表現されますが、""以外の表現方法もあります。一方、nullは値が存在しないことを表す特殊な値です。つまり、空の文字列とnullは異なるものです。TextFieldなどの要素に対して、tf.getText()==""かtf.getText()==nullの判定を行うことができます。また、tf.getText().length()==0と比較しても同じ結果が得られます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

tf.getText() == "" では、オブジェクト比較になってしまうので、当然NGです。 "".equals(tf.getText()) とすれば良いでしょう。 空文字と呼ばれているものは、""と同じですよ。 Stringクラスで考えると、インスタンス化がされているが、中身の文字列が""の状態にあります。 nullは、そもそもオブジェクトすら設定されていない状態です。 例えばStringBufferクラスの変数を宣言しても、インスタンス化されていない状態、それがnullです。

koun
質問者

お礼

回答ありがとうございます。 確かに、tf.getText()はStringオブジェクトだけど、"~"はオブジェクトではないですね。 ということは比較できませんね。 代入するときとごっちゃになっていました。 空文字は""と同じなんですね。 ""はインスタンス化されているけど、nullはされていないんですね。よくわかりました。

その他の回答 (1)

回答No.2

Java 初心者がよく間違えることです(いわゆるみんなが落ちた落とし穴です)が、文字列の比較は「tf.getText()==""」ではできません。 正確に言うと「==」演算子は文字列を比較するための演算子ではありません。 文字列を比較する場合は、 String#equals(Object) または、 String#compareTo(String) を使用します。 詳細はリファレンスをご確認ください。 「==」演算子はオブジェクト変数の比較時、オブジェクト変数が null であるかの検査、オブジェクト変数とオブジェクト変数が同一のオブジェクトを指しているかを検査するために用いられます。

koun
質問者

お礼

回答ありがとうございます。Stringクラスについて調べてみます。

関連するQ&A