java初心者です。
空の文字列とnullと""の3つの関係がよくわかりません。
TextFieldを使った簡単なプログラムを作りました。そこで、”TextFieldに何も入力されていないこと”を判定する文を書こうと思ったのですが、どう書けばいいのか迷いました。
TextFieldのオブジェクトをtfとして、tf.getText()==""かtf.getText()==nullで大丈夫だと思いましたが、実行してみると、どちらを用いても判定できませんでした。結局、tf.getText().length()==0で判定できました。そこで、リファレンスを見ると、getText()はデフォルトで空の文字列を返すと、書いてありました。
したがって、「""とnullは空の文字列とは異なる」という理解に至ったのですが、では空の文字列とは何なのかという疑問がわいてきました。
また、自分は""とnullの違いもよくわかっていません。""とnullが異なるものである、ということはわかるのですが・・・
質問をまとめると
・空の文字列とは何なのか?
・空の文字列は""やnullとどう違うのか?
です。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
tf.getText() == ""
では、オブジェクト比較になってしまうので、当然NGです。
"".equals(tf.getText())
とすれば良いでしょう。
空文字と呼ばれているものは、""と同じですよ。
Stringクラスで考えると、インスタンス化がされているが、中身の文字列が""の状態にあります。
nullは、そもそもオブジェクトすら設定されていない状態です。
例えばStringBufferクラスの変数を宣言しても、インスタンス化されていない状態、それがnullです。
回答ありがとうございます。
確かに、tf.getText()はStringオブジェクトだけど、"~"はオブジェクトではないですね。
ということは比較できませんね。
代入するときとごっちゃになっていました。
空文字は""と同じなんですね。
""はインスタンス化されているけど、nullはされていないんですね。よくわかりました。
No.2
- 回答日時:
Java 初心者がよく間違えることです(いわゆるみんなが落ちた落とし穴です)が、文字列の比較は「tf.getText()==""」ではできません。
正確に言うと「==」演算子は文字列を比較するための演算子ではありません。
文字列を比較する場合は、 String#equals(Object) または、 String#compareTo(String) を使用します。
詳細はリファレンスをご確認ください。
「==」演算子はオブジェクト変数の比較時、オブジェクト変数が null であるかの検査、オブジェクト変数とオブジェクト変数が同一のオブジェクトを指しているかを検査するために用いられます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- PHP ここで言う空文字の意味とは? 1 2022/08/05 16:27
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でフォームのオブジェクト名...
-
Java認定試験3級の問題です。 ...
-
質問すいません。 javascriptの...
-
Excelで =EMBED("Acrobat Docu...
-
Listに格納されているオブジェ...
-
EXCEL VBAにて動的にCheckBOXを...
-
直線と点の距離を使って当たり...
-
パワーポイントのVBAでテキスト...
-
オブジェクト名をforループ内で...
-
ワイルドカード<?>と型パラメー...
-
JqueryとPrototypeの比較
-
JAVAからHTMLへ値を返す方法
-
COMコンポーネントって何?
-
ヘッダファイルにおける文字列...
-
error C2712: オブジェクト ア...
-
java utf-8 で ファイル出力
-
VBA 同じ名前のオブジェクトを...
-
SQLException
-
ワードで画像をドロップすると...
-
VBAでvlookup関数から、別シー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
JAVAからHTMLへ値を返す方法
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBA 同じ名前のオブジェクトを...
-
Object型からDouble型へのキャスト
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
LISTBOXの内容が更新されま...
-
Vbで通常使用するプリンターを...
-
多人数のじゃんけんプログラム
-
オブジェクト名をforループ内で...
-
ASP.net 教えてください!!(...
-
JSPのout.printについて
-
時間帯判定をする。
-
error C2712: オブジェクト ア...
-
Accessの連結・非連結オブジェ...
おすすめ情報