Home > プログラミング > Java の & のオーバロード

Java の & のオーバロード

とあるプログラミング初心者の Java プログラムを見ていたら,

if( a <= b & a <= c) {
    ....
}

みたいなコードが書かれていた.

はじめ見たときはC言語であればまったく問題ないコードだけど Java で論理演算の結果を bit 演算しちゃダメだろ,と考えていた.

しかしながら,実はこのコードはコンパイルも通るしちゃんと動く.int と boolean でキャストが自然に起こるようになったのかとも考えたが,実のところ & は boolean 同士をオペランドに取れるようにオーバロードされているだけだった.でもまあ,今までまったく知らなかったので少々驚きだった.

ちなみに,よく考えてみると AND を && でとると左のオペランドが false のときに右側のオペランドは評価されないので,これと対になって両方とも評価される & が存在することは当然だなぁと思う.うーむ,こんなことにも気づかずに何年間 Java 使ってたんだろ... 恥ずかしい

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > Java の & のオーバロード

Search
Feeds

Page Top