Javaでの「または」や「かつ」の表し方
Javaは、Oracleが提供するオブジェクト指向プログラミング言語です。時にはプログラミング言語ではなく、Java SEと呼ばれるソフトウェアプラットフォームを指す場合もあります。ここでは、Javaの言語仕様の中から、「または」や「かつ」をどのように表すのか解説していきます。
【参考】:Oracle Java
Javaの言語仕様
Javaの言語仕様はOracleが定めており、「Java Language and Virtual Machine Specification」サイトで公開しています。最新の言語仕様はJava SE 22です。最新版から旧バージョンまで、対応する情報やドキュメントが公開されています。
【参考】:Java Language and Virtual Machine Specification 【参考】:The Java® Language Specification Java SE 22 Edition
Javaの日本語版ドキュメントは?
Javaの言語仕様をネットで検索すると、英語のドキュメントサイトがヒットします。同社は、英語サイトと同様の「Java SE 日本語ドキュメント」日本語サイトをオープンしていますので、そちらを参考にすると良いでしょう。
最新版のJava SE 22は英語版のみですが、Java SE 21までの情報は日本語化されています。
日本語サイトを見ると、Javaの関連情報は日本語で提供されていますが、肝心のJavaの言語仕様自体は日本語版が提供されていません。言語仕様に限定すると、日本語のJava関連書籍あるいは解説サイトなどを参考にしながら、英語のドキュメントを理解する必要があります。
【参考】:Java SE 日本語ドキュメント 【参考】:Java Language and Virtual Machine Specification
Javaの「または」や「かつ」を学ぶ
Javaはプログラミング言語であり、言語仕様に基づいてプログラムコードを開発します。ここでは初めに、プログラミングで扱う論理演算について解説します。「四則演算なら分かる」という方もそのまま理解することができます。
プログラミングで扱う論理演算
論理演算とは、真偽を問う命題で用いる方法です。判断条件を表す式となる命題が、正しいか(真)、正しくないか(偽)を表します。簡単に言うと日本語で言う「白か黒か」のような、はっきりどちらかに仕訳する方法と考えて良いでしょう。
この他にも、0か1かや、TrueかFalseかなども同様の考え方です。
論理演算子とは
論理演算子とは、論理演算を行うにあたって処理すべき演算を表す記号を指します。通常の演算子では、四則演算を行う場合の「足す」「引く」「掛ける」「割る」が該当し、それぞれ「+」、「-」、「*」、「/」で表されます。
論理演算子の場合は、論理和、論理積などで構成されます。数学で出てきた「A または B」、「A かつ B」がまだ記憶にある方も多いでしょう。ここでいう「または」を論理和、「かつ」を論理積と呼びます。上記のほか、論理否定と排他的論理和の4つで論理演算がカバーできます。
排他的論理和については、実装されていないプログラミング言語もあります。
Javaでの「または」の表し方
Javaで用いる「または」は、論理演算子の論理和を表します。「A または B」を「A || B」と表記します。「||」の部分を用いて、論理演算に使用します。AまたはBのいずれかが真(True)の場合に、真(True)となります。
この表し方はC言語やその流れを汲んでいるプログラミングで用いられる表記方法です。「|」をキーボードで見つけられない方は、右上側の「¥」を探してください。「Shift」+「¥」で入力することができます。
Javaでの「かつ」の表し方
Javaで用いる「かつ」は、論理演算子の論理積を表します。「A かつ B」を「A && B」と表記します。「&&」の部分を用いて、論理演算に使用します。この表し方もC言語と同様の表記方法です。AとBがともに真(True)の場合のみ、真(True)となります。
Javaで使えるその他の論理演算子
Javaでは、論理和と論理積のほかに論理否定に対応します。論理否定とは、論理値を反転する処理を行います。あえて言うなら「でない」となるでしょう。この場合の表記方法は「! A」などと記載し、「!」を使って論理演算を構成します。
Aが真(True)の場合に偽(False)、偽(False)の場合に真(True)となります。
Javaの論理演算子一覧
Javaの言語仕様で定義される論理演算子を整理すると、3種類が提供されます。一覧表示すると以下のようになります。排他的論理和は、後ほど紹介するビット演算子で定義されています。
名称 記号 説明
論理和 || 2つの論理値のいずれかが真であれば、真となる=「または」
論理積 && 2つがともに真の条件で、真となる=「かつ」
論理否定 ! 倫理値が真の場合に偽、偽の場合に真となる=「でない」
他のプログラミング言語の論理演算子
論理演算子は、プログラミング言語によって言語仕様が異なります。JavaはC言語の仕様の流れを汲んでおり、C言語に似通っています。
その他の言語を見ると、PythonはC言語とは異なる言語仕様となり、論理演算子も異なります。論理和を「or 演算子」と呼び、「A or B」で表します。論理積は「and 演算子」で、「A and B」で表します。論理否定は「not 演算子」と呼び、「not A」のように表します。
【参考】:Python 論理演算子
Javaで用いるその他の言語仕様
Javaは言語仕様がC言語の流れを汲んでおり、C言語が理解できればすんなり利用できます。しかし、すでに紹介済みの論理演算子に加えて、ビット演算子や比較演算子となると頭を抱える人もいるのではないでしょうか。ここでは、そのビット演算子や比較演算子について学んでいきます。
【参考】:Java SE 日本語ドキュメント 【参考】:Java Language and Virtual Machine Specification
Javaのビット演算子
Javaでは論理演算に加えて、ビット処理も演算子で表すことができます。ビット演算子とは、整数型の数値を2進数で表し、ビット単位で演算するために用います。論理演算子同様に、「または」に相当するビット和、「かつ」に相当するビット積があります。
その他に排他的論理和に相当するビット排他的和や、ビットの右シフトや左シフトなどが用意されています。
文法は、ビット和が「|」、ビット積が「&」、ビット排他的和が「^」で表します。
「||」と「|」、「&&」と「&」の違いは、論理値で表す値は2文字、整数で表す値のビット演算は1文字で示されます。違いに注意して使用しましょう。
Javaの比較演算子
比較演算子とは、if文などの条件分岐などの際に真偽を返す演算子です。前後の2つは等しい場合や、大小、等しくない場合などの判別に使用します。
具体的には、AとBが等しい場合は「A == B」、AがBより小さい場合は「A < B」、AがBよりも大きい場合は「A > B」で表します。この他にも、AがBより小さいか等しい場合は「A <= B」、AがBより大きいか等しい場合は「A >= B」、AとBが等しくない場合は「A != B」で表します。
比較演算子では、3つ以上の値を「A == B == C」や「A == B !! D == E 」などのように表すことができます。優先順位は、算術演算子、比較演算子、論理演算子の順で評価されます。
しかしながら、あまりに複雑な条件をそのまま記述すると、メンテナンス性が損なわれます。そのためカッコを併用したり、入れ子や三項演算子などを検討したりすると良いでしょう。
なお、等しい場合の「A == B」は「=」が2つです。if文などで間違えて「=」を1つにすると、代入演算子と解釈されますので注意しましょう。
Javaの「または」の動作はプログラム作成しながら確認しよう
ここまでで、Javaの論理演算子、ビット演算子、比較演算子を学んできました。プログラミングの際には、カッコを使いながらコードを見やすく仕上げていきます。コーディングが分かれば、演算結果もおおよその推測がつきます。
慣れるまでは、printf()メソッドなどで結果を確認しながらコーディングを進めることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから