【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷




―Javaプログラミングの前提知識―

@ITハイブックス編
2003/3/27
Javaプログラミング
ワンポイントレクチャーについて

   演算子

   ワンポイントQuestion

 次のプログラムを実行したときの結果として正しいものはどれですか? (単一選択)

class q21 {
  public static void main(String[] args) {
    int x=5;
    int y=-3;
    int result=1;
    result -= x++ * --y;
    System.out.println(result);
  }
}


A -19
B 16
C 19
D 20
E 21

   演算子

 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つの値を設定します。   

v = w > x ? y : z ;

 上記の例は、w > xがtrueであればv = y;、falseであればv = z;となり、次と同様になります。

if ( w > x)
    v = y;
else
    v = z;

(9)instanceof演算子

 左右で指定された型を比較し、一致した場合trueを、一致しない場合falseを返します。

POINT

インクリメント・デクリメント演算子をほかの演算子と組み合わせて使用した場合、演算子が実行される順序はその位置によって変わってきます。

class sample21 {
  public static void main(String[] args) {
    int x, y, z;
    x=20;
    y=10;
    z=y++*x;
    System.out.println("y="+y+" z="+z);
  }
}

[実行結果]
y=11 z=200
(y=11、z=10*20=200になります)

class sample21 {
  public static void main(String[] args) {
    int x, y, z;
    x=20;
    y=10;
    z=++y*x;
    System.out.println("y="+y+" z="+z);
  }
}

[実行結果]
y=11 z=220
(y=11、z=11*20=220になります)


   ワンポイントQuestionの解答

正解 E

Java2ラーニングブック −310-035 編−

本記事は@ITハイブックスシリーズ「Java2ラーニングブック −310-035 編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX



ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています