Javaのboolean型に対して&&や||でなく&や|が使える意味はどのくらいあるのでしょう。Cとの互換性もあったのでしょうが、実際はboolean型は条件式として使うことがほとんどなので短絡評価のみでよい気がしますが。この文法は間違いのもとになりますね。
2011-08-30 01:47:36@ryoasai74 エラーチェックをごりごり書く必要があるときに使いました。全部のチェックを一度にしたかったので。。。。FindBugsで検出されたので即座に書き直しましたが!if文たくさんは面倒くさかった。。。
2011-08-30 01:53:07@megascus @ryoasai74 boolean型を && や || じゃなく & や | で結合すると、どんなメリットがありますか? 字数の節約ぐらいしか思いつかなくって、すみません orz
2011-08-30 02:05:03@tt4cs @ryoasai74 A & B の場合 Aの真偽を問わず、Bは必ず評価される。 A && Bの場合 Aがtrueなら Bは評価されない。単純な真偽値だけなら変わりはありませんが、Bが真偽値を返すメソッドだと実行される、されないで大違いという。
2011-08-30 02:13:00あー、、、、短絡演算子と対になる言葉は標準演算子なのね。まあ、確かに速度的な問題がなければ、標準演算子のほうが良い気がするけど。。。。。短絡演算子のほうがよく使われている予感。
2011-08-30 02:18:12@megascus いえいえ、こちらこそ単によくわかっていなかっただけです。演算子の右側の処理をおこなってから真偽判断するのか、それともおこなわずに真偽判断が完了してしまうのかは、たしかに違いますよね。ありがとうございます!
2011-08-30 02:30:13@ryoasai74 副作用のある関数を呼び出している場合でしょうか。評価の途中でどこかの値が書き変わるような。その時は&&とかを使ってたりするとだめですからね。
2011-08-30 07:47:42@ryoasai74 そもそもとか、間違いとか、そういう事ではなく、ショートサーキット演算子の存在意義についての私の考えをレスしたのです。言語としてそれもサポートしている、と受け取れるのではないでしょうか。という発言です。
2011-08-30 09:24:36@ryoasai74 あと、言語として記述できるのにもかかわらず、それを「間違い」だと断定し、しかも言語要素の存在意義を否定するなど、どうしてできるのでしょう。
2011-08-30 09:28:45@everpeace deprecatedメソッドと同じで言語仕様も歴史的な経緯で導入されたけれど使われない機能は当然あってしかるべきだと思いますね。条件文で副作用のある式を使うのはわかりやすいプログラムという意味でやってはいけないということで、わかりやすい変数名を付けるのと同じ
2011-08-30 09:39:46短絡でない&と|がboolean値に対して使えるのはintと論理値が同一だったC言語のころの名残だと思っていますが。私自身はbooleanに対してこれらの演算子を実際のプログラムで使った記憶がないですね。
2011-08-30 09:41:41@ryoasai74 もちろん、それは同意しますが、使ってほしくない、使うべきでない、程度で存在意義がない、と結論づけるのは、議論の飛躍でしょう。だって、使える時点で存在意義はあるんだもの。
2011-08-30 09:50:55