
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ランキング
-
EXCEL VBAにて動的にCheckBOXを...
-
VBAのWindowオブジェクトとWork...
-
Strutsのbeanタグについて
-
パワーポイントのVBAでテキスト...
-
VBA 同じ名前のオブジェクトを...
-
Excelで =EMBED("Acrobat Docu...
-
多人数のじゃんけんプログラム
-
C#でフォームのオブジェクト名...
-
非アクティブの状態で表示され...
-
VBA 過去のファイル内の同じオ...
-
オブジェクトを枠線に合わせる...
-
オブジェクトレベルとメタレベル
-
3Dの背景とはどういう作り方を...
-
C++でのクラスオブジェクトの破棄
-
CoCreateInstanceでエラーになる。
-
COMコンポーネントって何?
-
三角形オブジェクト
-
error C2712: オブジェクト ア...
-
Power Pointのページ設定について
-
ビジュアルC++でボタンの有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
パワーポイントのVBAでテキスト...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBA 同じ名前のオブジェクトを...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
CoCreateInstanceでエラーになる。
-
ワイルドカード<?>と型パラメー...
-
戻り値がクラスオブジェクト
-
error C2712: オブジェクト ア...
-
Vbで通常使用するプリンターを...
-
質問すいません。 javascriptの...
-
Object型からDouble型へのキャスト
-
Accessの連結・非連結オブジェ...
-
オブジェクトレベルとメタレベル
-
C++でのクラスオブジェクトの破棄
-
時間帯判定をする。
-
VBAでvlookup関数から、別シー...
おすすめ情報