osakaこんにちは。陽気なシステム屋の一員のシホンヌです。システム屋を何年もやっていると、色々な言語を使用して開発をします。今日はVB、明日はJava、明後日はphp。いうことを繰り返していると、時々混同してしまったり、初めて使う言語なのに当たり前のように過去慣れ親しんだ言語の書き方をしてしまい、結果が思うように得られず焦ることがあります。文字列の比較...!文字列Aと文字列Bを比較してその結果を得たい場合、言語によって比較演算子が違います。VBの場合は文字列の比較に「=」「<>」を使用します。Ifこれに慣れ親しんで、javaでやってしまうと想定と違った結果が出てしまうことがあります。javaでは、文字列の内容を比較する比較演算子にequals()メソッドを使用します。同じ文字列でない場合、”違う文字列です”を出力System.out.println(“違う文字列です”);}上記のプログラムを実行すると、”同じ文字列です”が出力されますが、VBと似たような感覚で下記のように比較すると、str1もstr2も”Hello”という文字列なのにも関わらず、”違う文字列です”という出力がされる分岐に行ってしまいます。(str1==str2){System.out.println(“同じ文字列です”);}else{System.out.println(“違う文字列です”);}これは、str2は新規にStringオブジェクトを生成している為、str1とstr2が違うオブジェクトとして扱われてしまうためです。ちなみに、下記if文を実行すると、”同じ文字列です”が出力されます。これはStringクラスが気を使ってくれた結果です。(str1==str3){System.out.println(“同じ文字列です”);}else{System.out.println(“違う文字列です”);}たまに文字列の比較を==で行っているプログラムを見かけますが、実行すると想定通りだったりそうでなかったりします。ちなみにequalsIgnoreCase()メソッドを使うと、大文字小文字を無視して比較します。phpでは文字列の比較に「===」や「strcmp」を使用します。C言語では「strcmp」。rubyでは「==」。objective-cでは「isEqualToString:」。使用する言語によって同じだったりよく似ていたりして間違えやすいです。文字列の比較は使用頻度が高く、些細なミスでバグを起こしやすい所なので、簡単な処理だからと言って舐めてかかると痛い目にあいます。初心者はやってしまいがちなバグなので注意すべき処理ですね。Webサイト開発実績はこちら。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。陽気なシステム屋が世界を変える。