- 締切済み
(o==null ? get(i)==null : o.equals(get(i))) の意味
すみません、以下の式を わかりやすく解説していただけないでしょうか・・ for文で使用する式なのでしょうか? Java暦はまだ浅いので、 以下のような複雑な式は初めて見ました。 また、「:」や「?」の意味が分からないのですが・・。 (o==null ? get(i)==null : o.equals(get(i)))
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- k_tracker
- ベストアンサー率48% (12/25)
#2さんのとおり、 <条件文> ? <真の場合> : <偽の場合> となります。 例) max = (a>b) ? a : b ; → a>b なら a をmaxに代入。 → そうでないなら b を max に代入。 この例の場合ですと、真の場合も偽の場合も条件式なので、booleanが返りますね。 結果 = (o==null ? get(i)==null : o.equals(get(i))); →oがnullの場合: → get(i) がnull なら true を返す。 → get(i) がnull でないなら false を返す。 →oがnullでない場合: → o が get(i) と等しければなら true を返す。 → o が get(i) と等しくなければ False を返す。 条件式として書き直すとこんな感じでしょう。 ( (o==null && get(i)==null) || (o!=null && o.equals(get(i) ) )
- ranx
- ベストアンサー率24% (357/1463)
No.1さんの回答で大体良いのですが、 get(i)==null; というステートメントはありませんよね。 この場合は、oがnullならば(get(i)==null)の値(trueまたはfalse)を nullでないならば(o.equals(get(i)))の値(やはりtrueまたはfalse)を 式全体の値とするということです。
- chi-kon
- ベストアンサー率43% (58/132)
条件演算子っていうみたいですね。 例にある演算ってどういうときにつかうのかが気になったりしちゃいます。
- madman
- ベストアンサー率24% (612/2465)
条件文?条件が真の場合:条件が偽の場合 として使います。 CやC++でも利用可能です。
- MovingWalk
- ベストアンサー率43% (2233/5098)
この構文はC言語でも使います。 if文の変形と考えてください。if文では次のようになります。 if(o==null) get(i)==null; else o.equals(get(i)); こちらの下の方をご覧ください。 http://user.ecc.u-tokyo.ac.jp/~t10521/ecmascript/tutorial/daishou.html