―Javaプログラミングの前提知識―
2003/3/27
演算子 |
ワンポイントQuestion |
次のプログラムを実行したときの結果として正しいものはどれですか? (単一選択)
|
|
演算子 |
Java言語で利用できる演算子は、C/C++言語とよく似ています。下表は、Java言語の演算子の一覧で、演算の優先順位の高低もあらわしています。
優先順位 | 演算子 | 結合性 |
高い | . [] () | 右 → 左 |
++ -- + - ~ ! (キャスト) | 右 → 左 | |
* / % | 左 → 右 | |
+ - | 左 → 右 | |
<< >> >>> | 左 → 右 | |
< > <= >= instanceof | 左 → 右 | |
== != | 左 → 右 | |
& | 左 → 右 | |
^ | 左 → 右 | |
| | 左 → 右 | |
&& | 左 → 右 | |
|| | 左 → 右 | |
?: | 右 → 左 | |
低い | = *= /= %= -= <<= >>= >>>= &= ^= |= | 右 → 左 |
以下に、各演算子の詳細について演算の優先度の順に説明します。
(1)算術演算子
*(掛け算)、/(割り算)、%(割り算の余り)、+(足し算)、-(引き算) |
なお、前出の表中の4行目の+、-が算術演算子をあらわしており、2行目の+、-は単項演算子で符号の反転に利用します。
(2)比較演算子
<(小なり、〜より小さい)、>(大なり、〜より大きい) |
(3)論理演算子
&(論理積、AND)、|(論理和、OR)、^(排他的論理和、XOR)、!(否定、NOT) |
(4)ショートサーキット演算子
&&(論理積、AND)、||(論理和、OR) |
(5)ビット操作演算子
以下に、ビット操作演算子を示します。
>> n | 符号ビット(左端の1ビット)はそのままで、左端の2ビット目からnビット右シフトし、あいた部分に符号ビットを埋めます |
>>> n | 符号を意識せずにnビット右シフトし、あいた部分に0を埋めます |
<< n | nビット左シフトし、右端のあいた部分に0を埋めます |
~ n | 補数です。ビットの反転をします |
次の表は、ビット操作演算子を利用した例です。
X | 1111 0110 1101 0011 |
x >> 3 | 1111 1110 1101 1010 |
x >>> 2 | 0011 1101 1011 0100 |
x << 1 | 1110 1101 1010 0110 |
~x | 0000 1001 0010 1100 |
(6)再帰演算子
代表的な例を下表に示します。
x *= y; | x = x * y; |
x /= y; | x = x / y; |
x %= y; | x = x % y; |
x += y; | x = x + y; |
x -= y; | x = x - y; |
(7)インクリメント・デクリメント演算子
以下に、インクリメント演算子とデクリメント演算子を示します。
x++; | xを評価してからx+1に更新します |
++x; | x+1に更新してから評価します |
x--; | xを評価してからx-1に更新します |
--x; | x-1に更新してから評価します |
(8)条件演算子
条件式 ? trueの場合の値 : falseの場合の値 |
条件のtrue/falseの状態により1つの値を設定します。
|
上記の例は、w > xがtrueであればv = y;、falseであればv = z;となり、次と同様になります。
|
(9)instanceof演算子
左右で指定された型を比較し、一致した場合trueを、一致しない場合falseを返します。
POINT | ||
インクリメント・デクリメント演算子をほかの演算子と組み合わせて使用した場合、演算子が実行される順序はその位置によって変わってきます。
[実行結果]
[実行結果] |
ワンポイントQuestionの解答 |
正解 E
Java2ラーニングブック
−310-035 編− 本記事は@ITハイブックスシリーズ「Java2ラーニングブック −310-035 編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|